diff options
| author | Jordan Wiens <jordan@psifertex.com> | 2025-07-02 16:30:34 -0400 |
|---|---|---|
| committer | Jordan Wiens <jordan@psifertex.com> | 2025-07-02 17:09:26 -0400 |
| commit | 911cca51f5125da75dc53063f71ab2e4c9309fdc (patch) | |
| tree | 652a5d9b1e1ca580d804e9c50eecd6125605a591 /api-docs | |
| parent | f8ab8a87a2ce514875098667a3cd4b01279a2ed2 (diff) | |
fix docs for submodules like collaboration and debugger
Diffstat (limited to 'api-docs')
| -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: |
