Commits

Anonymous committed b0f2a86

Allow any master document structure when writing the HTML help contents file.

  • Participants
  • Parent commits 07ace22

Comments (0)

Files changed (3)

-Release 0.3 (TBA)
-=================
+Changes in trunk
+================
 
 New features added
 ------------------
 
-* If the `pygments_style` contains a dot it's treated as import path and
-  used as style class.
+* If the `pygments_style` config value contains a dot it's treated as the
+  import path of a custom Pygments style class.
+
+Bugs fixed
+----------
+
+* sphinx.htmlwriter: Correctly write the TOC file for any structure of the
+  master document.
 
 
 Release 0.2 (Apr 27, 2008)

sphinx/environment.py

                                     stream=RedirStream(self._warnfunc))
         return doctree
 
-    def get_and_resolve_doctree(self, docname, builder, doctree=None):
+    def get_and_resolve_doctree(self, docname, builder, doctree=None, prune_toctrees=True):
         """Read the doctree from the pickle, resolve cross-references and
            toctrees and return it."""
         if doctree is None:
             tocentries = _entries_from_toctree(toctreenode, separate=True)
             if tocentries:
                 newnode = addnodes.compact_paragraph('', '', *tocentries)
+                newnode['toctree'] = True
                 # prune the tree to maxdepth and replace titles
-                if maxdepth > 0:
+                if maxdepth > 0 and prune_toctrees:
                     _walk_depth(newnode, 1, maxdepth, titleoverrides)
                 # replace titles, if needed
                 if titleoverrides:

sphinx/htmlhelp.py

         if builder.config.html_use_modindex:
             f.write('<LI> ' + object_sitemap % ('Global Module Index', 'modindex.html'))
         # the TOC
-        toc = builder.env.get_and_resolve_doctree(builder.config.master_doc, builder)
+        tocdoc = builder.env.get_and_resolve_doctree(builder.config.master_doc, builder,
+                                                     prune_toctrees=False)
         def write_toc(node, ullevel=0):
             if isinstance(node, nodes.list_item):
                 f.write('<LI> ')
             elif isinstance(node, addnodes.compact_paragraph):
                 for subnode in node:
                     write_toc(subnode, ullevel)
-            elif isinstance(node, nodes.section):
-                write_toc(node[1], ullevel)
-            elif isinstance(node, nodes.document):
-                write_toc(node[0], ullevel)
-        write_toc(toc)
+        istoctree = lambda node: isinstance(node, addnodes.compact_paragraph) and \
+                    node.has_key('toctree')
+        for node in tocdoc.traverse(istoctree):
+            write_toc(node)
         f.write(contents_footer)
     finally:
         f.close()