Skip to content

Commit 9c77714

Browse files
committed
pypredef_generator_pdb: Modify docstring for procedure parameters
1 parent e11fdf8 commit 9c77714

File tree

1 file changed

+92
-50
lines changed

1 file changed

+92
-50
lines changed

pypredef_generator_pdb.py

Lines changed: 92 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,74 @@
1515

1616
#===============================================================================
1717

18-
_PDB_TYPES_MAP = {
19-
gimpenums.PDB_INT32: int,
20-
gimpenums.PDB_INT16: int,
21-
gimpenums.PDB_INT8: int,
22-
gimpenums.PDB_FLOAT: float,
23-
gimpenums.PDB_STRING: bytes,
24-
gimpenums.PDB_COLOR: gimpcolor.RGB,
25-
26-
gimpenums.PDB_INT32ARRAY: tuple,
27-
gimpenums.PDB_INT16ARRAY: tuple,
28-
gimpenums.PDB_INT8ARRAY: tuple,
29-
gimpenums.PDB_FLOATARRAY: tuple,
30-
gimpenums.PDB_STRINGARRAY: tuple,
31-
gimpenums.PDB_COLORARRAY: tuple,
32-
33-
gimpenums.PDB_IMAGE: gimp.Image,
34-
gimpenums.PDB_ITEM: gimp.Item,
35-
gimpenums.PDB_DRAWABLE: gimp.Drawable,
36-
gimpenums.PDB_LAYER: gimp.Layer,
37-
gimpenums.PDB_CHANNEL: gimp.Channel,
38-
gimpenums.PDB_SELECTION: gimp.Channel,
39-
gimpenums.PDB_VECTORS: gimp.Vectors,
40-
41-
gimpenums.PDB_PARASITE: gimp.Parasite,
42-
gimpenums.PDB_DISPLAY: gimp.Display,
43-
}
18+
19+
class PdbType(object):
20+
21+
def __init__(self, type_id, type_, base_type=None):
22+
self._type_id = type_id
23+
self._type_ = type_
24+
self._base_type = base_type
25+
26+
@property
27+
def type_id(self):
28+
return self._type_id
29+
30+
@property
31+
def type_(self):
32+
return self._type_
33+
34+
@property
35+
def base_type(self):
36+
return self._base_type
37+
38+
def get_name(self, include_base_type=False):
39+
if include_base_type and self._base_type is not None:
40+
return "{0}({1})".format(get_type_name(self._type_), get_type_name(self._base_type))
41+
else:
42+
return get_type_name(self._type_)
43+
44+
@classmethod
45+
def get_by_id(cls, pdb_type_id):
46+
return _PDB_TYPES_MAP[pdb_type_id]
47+
48+
49+
def get_type_name(type_):
50+
type_module = inspect.getmodule(type_)
51+
52+
if type_module and hasattr(type_module, "__name__") and type_module.__name__ != "__builtin__":
53+
return ".".join([type_module.__name__, type_.__name__])
54+
else:
55+
return type_.__name__
56+
57+
58+
_PDB_TYPE_ITEMS = [
59+
(gimpenums.PDB_INT32, int),
60+
(gimpenums.PDB_INT16, int),
61+
(gimpenums.PDB_INT8, int),
62+
(gimpenums.PDB_FLOAT, float),
63+
(gimpenums.PDB_STRING, bytes),
64+
(gimpenums.PDB_COLOR, gimpcolor.RGB),
65+
66+
(gimpenums.PDB_INT32ARRAY, tuple, int),
67+
(gimpenums.PDB_INT16ARRAY, tuple, int),
68+
(gimpenums.PDB_INT8ARRAY, tuple, int),
69+
(gimpenums.PDB_FLOATARRAY, tuple, float),
70+
(gimpenums.PDB_STRINGARRAY, tuple, bytes),
71+
(gimpenums.PDB_COLORARRAY, tuple, gimpcolor.RGB),
72+
73+
(gimpenums.PDB_IMAGE, gimp.Image),
74+
(gimpenums.PDB_ITEM, gimp.Item),
75+
(gimpenums.PDB_DRAWABLE, gimp.Drawable),
76+
(gimpenums.PDB_LAYER, gimp.Layer),
77+
(gimpenums.PDB_CHANNEL, gimp.Channel),
78+
(gimpenums.PDB_SELECTION, gimp.Channel),
79+
(gimpenums.PDB_VECTORS, gimp.Vectors),
80+
81+
(gimpenums.PDB_PARASITE, gimp.Parasite),
82+
(gimpenums.PDB_DISPLAY, gimp.Display),
83+
]
84+
85+
_PDB_TYPES_MAP = {type_item[0]: PdbType(*type_item) for type_item in _PDB_TYPE_ITEMS}
4486

4587
#===============================================================================
4688

@@ -98,39 +140,47 @@ def _get_ast_arguments_for_pdb_function(pdb_function):
98140

99141

100142
def _get_ast_docstring_for_pdb_function(pdb_function):
101-
docstring = "\n" + pdb_function.proc_blurb
143+
docstring = "\n"
144+
docstring += pdb_function.proc_blurb
145+
docstring += "\n\n"
102146

103147
if pdb_function.proc_help and pdb_function.proc_help != pdb_function.proc_blurb:
104-
docstring += "\n\n" + pdb_function.proc_help
105-
106-
docstring += _get_pdb_docstring_type_info(pdb_function)
148+
docstring += pdb_function.proc_help + "\n"
107149

108150
docstring += "\n"
151+
docstring += _get_pdb_docstring_param_info(pdb_function)
109152

110153
return ast.Expr(value=ast.Str(s=docstring))
111154

112155

113-
def _get_pdb_docstring_type_info(pdb_function):
114-
docstring_type_info = ""
156+
def _get_pdb_docstring_param_info(pdb_function):
157+
docstring_param_info = ""
115158
pdb_params = _get_pdb_params(pdb_function)[0]
116159

117160
if pdb_params:
118-
docstring_type_info += "\n"
161+
docstring_param_info += "Parameters:\n"
119162

120163
for pdb_param_info in pdb_params:
121-
docstring_type_info += "\n@type {0}: {1}".format(
122-
_get_pdb_param_name(pdb_param_info), _get_pdb_type_name_by_id(pdb_param_info[0]))
164+
docstring_param_info += _get_pdb_param_docstring(pdb_param_info) + "\n"
123165

124-
return docstring_type_info
166+
return docstring_param_info
167+
168+
169+
def _get_pdb_param_docstring(pdb_param_info):
170+
return "{0} ({1}): {2}".format(
171+
_get_pdb_param_name(pdb_param_info),
172+
PdbType.get_by_id(pdb_param_info[0]).get_name(include_base_type=True),
173+
_get_pdb_param_description(pdb_param_info))
125174

126175

127176
def _get_ast_return_value_types_for_pdb_function(pdb_function):
128177
if len(pdb_function.return_vals) > 1:
129178
node_return_value_types = ast.Tuple(
130-
elts=[ast.Name(id=_get_pdb_type_name_by_id(return_vals_info[0]))
179+
elts=[ast.Name(id=PdbType.get_by_id(return_vals_info[0]).get_name())
131180
for return_vals_info in pdb_function.return_vals])
132181
elif len(pdb_function.return_vals) == 1:
133-
node_return_value_types = ast.Name(id=_get_pdb_type_name_by_id(pdb_function.return_vals[0][0]))
182+
node_return_value_types = ast.Name(
183+
id=PdbType.get_by_id(pdb_function.return_vals[0][0]).get_name())
134184
else:
135185
node_return_value_types = ast.Name(id="None")
136186

@@ -167,17 +217,9 @@ def _get_pdb_params(pdb_function):
167217
return pdb_params, has_run_mode_param
168218

169219

170-
def _get_pdb_type_name_by_id(pdb_type_id):
171-
pdb_type = _PDB_TYPES_MAP[pdb_type_id]
172-
173-
pdb_type_module = inspect.getmodule(pdb_type)
174-
175-
if (pdb_type_module and hasattr(pdb_type_module, "__name__")
176-
and pdb_type_module.__name__ != "__builtin__"):
177-
return ".".join([pdb_type_module.__name__, pdb_type.__name__])
178-
else:
179-
return pdb_type.__name__
180-
181-
182220
def _get_pdb_param_name(pdb_param_info):
183221
return pdb_param_info[1].replace("-", "_")
222+
223+
224+
def _get_pdb_param_description(pdb_param_info):
225+
return pdb_param_info[2] if pdb_param_info[2] is not None else ""

0 commit comments

Comments
 (0)