Skip to content

Commit 911cca5

Browse files
committed
fix docs for submodules like collaboration and debugger
1 parent f8ab8a8 commit 911cca5

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

api-docs/source/conf.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,40 @@ def generaterst():
135135
modules.extend(modulelist(binaryninja.collaboration, basename="collaboration"))
136136
modules = sorted(modules, key=lambda pair: pair[0])
137137

138+
# Separate top-level and nested modules for proper TOC structure
139+
nested_modules = {"debugger": [], "collaboration": []}
140+
141+
for modulename, module in modules:
142+
filename = f"{module.__name__}-module.rst"
143+
if modulename.count(".") == 0:
144+
# Top-level module - always include in main TOC
145+
pythonrst.write(f" {modulename} <{filename}>\n")
146+
else:
147+
# This is a nested module - collect them for parent modules
148+
parent = modulename.split(".")[0]
149+
if parent in nested_modules:
150+
nested_modules[parent].append((modulename, filename))
151+
138152
for modulename, module in modules:
139153
# Since we put debugger python files in a folder, binaryninja.{modulename} is no longer the
140154
# correct name of the module
141155
filename = f"{module.__name__}-module.rst"
142-
spaces = " " * modulename.count(".")
143-
# Dirty hack to skip polutting the main toc with nested modules
144-
if modulename.count(".") == 0:
145-
pythonrst.write(f" {spaces}{modulename} <{filename}>\n")
146156
modulefile = open(filename, "w")
147157
underline = "="*len(f"{modulename} module")
148158
modulefile.write(f'''{modulename} module
149159
{underline}
150160
151161
''')
152162

163+
# Add sub-toctree for parent modules that have nested modules
164+
if modulename.count(".") == 0 and modulename in nested_modules and nested_modules[modulename]:
165+
modulefile.write(".. toctree::\n")
166+
modulefile.write(" :maxdepth: 1\n")
167+
modulefile.write(" :hidden:\n\n")
168+
for nested_name, nested_filename in nested_modules[modulename]:
169+
modulefile.write(f" {nested_name} <{nested_filename}>\n")
170+
modulefile.write("\n")
171+
153172
# Generate custom summary table
154173
classes = list(classlist(module))
155174
if classes:

0 commit comments

Comments
 (0)