[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39619] trunk/blender/source/blender/ python/intern/bpy_rna.c: properly escape chars for pythons bpy objects __repr__
Campbell Barton
ideasman42 at gmail.com
Mon Aug 22 20:13:38 CEST 2011
Revision: 39619
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39619
Author: campbellbarton
Date: 2011-08-22 18:13:37 +0000 (Mon, 22 Aug 2011)
Log Message:
-----------
properly escape chars for pythons bpy objects __repr__
Modified Paths:
--------------
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2011-08-22 16:54:26 UTC (rev 39618)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2011-08-22 18:13:37 UTC (rev 39619)
@@ -814,34 +814,40 @@
static PyObject *pyrna_struct_repr(BPy_StructRNA *self)
{
ID *id= self->ptr.id.data;
+ PyObject *tmp_str;
+ PyObject *ret;
+
if(id == NULL || !PYRNA_STRUCT_IS_VALID(self))
return pyrna_struct_str(self); /* fallback */
+ tmp_str= PyUnicode_FromString(id->name+2);
+
if(RNA_struct_is_ID(self->ptr.type)) {
- return PyUnicode_FromFormat("bpy.data.%s[\"%s\"]",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2);
+ tmp_str);
}
else {
- PyObject *ret;
const char *path;
path= RNA_path_from_ID_to_struct(&self->ptr);
if(path) {
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
path);
MEM_freeN((void *)path);
}
else { /* cant find, print something sane */
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]...%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
RNA_struct_identifier(self->ptr.type));
}
+ }
- return ret;
- }
+ Py_DECREF(tmp_str);
+
+ return ret;
}
static PyObject *pyrna_prop_str(BPy_PropertyRNA *self)
@@ -911,27 +917,35 @@
static PyObject *pyrna_prop_repr(BPy_PropertyRNA *self)
{
- ID *id;
+ ID *id= self->ptr.id.data;
+ PyObject *tmp_str;
PyObject *ret;
const char *path;
PYRNA_PROP_CHECK_OBJ(self)
- if((id= self->ptr.id.data) == NULL)
+ if(id == NULL)
return pyrna_prop_str(self); /* fallback */
+ tmp_str= PyUnicode_FromString(id->name+2);
+
path= RNA_path_from_ID_to_property(&self->ptr, self->prop);
if(path) {
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"].%s", BKE_idcode_to_name_plural(GS(id->name)), id->name+2, path);
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R].%s",
+ BKE_idcode_to_name_plural(GS(id->name)),
+ tmp_str,
+ path);
MEM_freeN((void *)path);
}
else { /* cant find, print something sane */
- ret= PyUnicode_FromFormat("bpy.data.%s[\"%s\"]...%s",
+ ret= PyUnicode_FromFormat("bpy.data.%s[%R]...%s",
BKE_idcode_to_name_plural(GS(id->name)),
- id->name+2,
+ tmp_str,
RNA_property_identifier(self->prop));
}
+ Py_DECREF(tmp_str);
+
return ret;
}
More information about the Bf-blender-cvs
mailing list