sphinx doc gen: multiple examples possible and include the scripts docstring inline in sphinx.

also tag unused vars
This commit is contained in:
2011-02-16 17:31:04 +00:00
parent 6b12fa8fed
commit aed7eaf0d9
6 changed files with 152 additions and 6 deletions

View File

@@ -73,7 +73,7 @@ else:
"mathutils.geometry",
)
FILTER_BPY_TYPES = ("Mesh", ) # allow
FILTER_BPY_TYPES = ("Operator", ) # allow
FILTER_BPY_OPS = ("import_scene", ) # allow
# for quick rebuilds
@@ -131,14 +131,60 @@ def range_str(val):
return str(val)
def example_extract_docstring(filepath):
file = open(filepath, 'r')
line = file.readline()
line_no = 0
text = []
if line.startswith('"""'): # assume nothing here
line_no += 1
else:
file.close()
return "", 0
for line in file.readlines():
line_no += 1
if line.startswith('"""'):
break
else:
text.append(line.rstrip())
line_no += 1
file.close()
return "\n".join(text), line_no
def write_example_ref(ident, fw, example_id, ext="py"):
if example_id in EXAMPLE_SET:
fw("%s.. literalinclude:: ../examples/%s.%s\n\n" % (ident, example_id, ext))
# extract the comment
filepath = "../examples/%s.%s" % (example_id, ext)
filepath_full = os.path.join(os.path.dirname(fw.__self__.name), filepath)
text, line_no = example_extract_docstring(filepath_full)
for line in text.split("\n"):
fw("%s\n" % (ident + line).rstrip())
fw("\n")
fw("%s.. literalinclude:: %s\n" % (ident, filepath))
fw("%s :lines: %d-\n" % (ident, line_no))
fw("\n")
EXAMPLE_SET_USED.add(example_id)
else:
if bpy.app.debug:
print("\tskipping example:", example_id)
# Support for numbered files bpy.types.Operator -> bpy.types.Operator.1.py
i = 1
while True:
example_id_num = "%s.%d" % (example_id, i)
if example_id_num in EXAMPLE_SET:
write_example_ref(ident, fw, example_id_num, ext)
i += 1
else:
break
def write_indented_lines(ident, fn, text, strip=True):
'''
@@ -517,6 +563,8 @@ def pyrna2sphinx(BASEPATH):
fw(".. module:: bpy.types\n\n")
write_example_ref("", fw, "bpy.types.%s" % struct.identifier)
base_ids = [base.identifier for base in struct.get_bases()]
if _BPY_STRUCT_FAKE: