diff options
Diffstat (limited to 'api-docs/source/conf.py')
| -rw-r--r-- | api-docs/source/conf.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/api-docs/source/conf.py b/api-docs/source/conf.py index 0e205d9f..c8c6eb73 100644 --- a/api-docs/source/conf.py +++ b/api-docs/source/conf.py @@ -135,14 +135,24 @@ Full Class List modules.extend(modulelist(binaryninja.collaboration, basename="collaboration")) modules = sorted(modules, key=lambda pair: pair[0]) + # Separate top-level and nested modules for proper TOC structure + nested_modules = {"debugger": [], "collaboration": []} + + for modulename, module in modules: + filename = f"{module.__name__}-module.rst" + if modulename.count(".") == 0: + # Top-level module - always include in main TOC + pythonrst.write(f" {modulename} <{filename}>\n") + else: + # This is a nested module - collect them for parent modules + parent = modulename.split(".")[0] + if parent in nested_modules: + nested_modules[parent].append((modulename, filename)) + for modulename, module in modules: # Since we put debugger python files in a folder, binaryninja.{modulename} is no longer the # correct name of the module filename = f"{module.__name__}-module.rst" - spaces = " " * modulename.count(".") - # Dirty hack to skip polutting the main toc with nested modules - if modulename.count(".") == 0: - pythonrst.write(f" {spaces}{modulename} <{filename}>\n") modulefile = open(filename, "w") underline = "="*len(f"{modulename} module") modulefile.write(f'''{modulename} module @@ -150,6 +160,15 @@ Full Class List ''') + # Add sub-toctree for parent modules that have nested modules + if modulename.count(".") == 0 and modulename in nested_modules and nested_modules[modulename]: + modulefile.write(".. toctree::\n") + modulefile.write(" :maxdepth: 1\n") + modulefile.write(" :hidden:\n\n") + for nested_name, nested_filename in nested_modules[modulename]: + modulefile.write(f" {nested_name} <{nested_filename}>\n") + modulefile.write("\n") + # Generate custom summary table classes = list(classlist(module)) if classes: |
