@@ -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