[Python-checkins] r62629 - in doctools/trunk: CHANGES sphinx/environment.py sphinx/htmlhelp.py

georg.brandl python-checkins at python.org
Fri May 2 11:00:10 CEST 2008


Author: georg.brandl
Date: Fri May  2 11:00:09 2008
New Revision: 62629

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


Modified:
   doctools/trunk/CHANGES
   doctools/trunk/sphinx/environment.py
   doctools/trunk/sphinx/htmlhelp.py

Modified: doctools/trunk/CHANGES
==============================================================================
--- doctools/trunk/CHANGES	(original)
+++ doctools/trunk/CHANGES	Fri May  2 11:00:09 2008
@@ -1,11 +1,17 @@
-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)

Modified: doctools/trunk/sphinx/environment.py
==============================================================================
--- doctools/trunk/sphinx/environment.py	(original)
+++ doctools/trunk/sphinx/environment.py	Fri May  2 11:00:09 2008
@@ -700,7 +700,7 @@
                                     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:
@@ -753,8 +753,9 @@
             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:

Modified: doctools/trunk/sphinx/htmlhelp.py
==============================================================================
--- doctools/trunk/sphinx/htmlhelp.py	(original)
+++ doctools/trunk/sphinx/htmlhelp.py	Fri May  2 11:00:09 2008
@@ -150,7 +150,8 @@
         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> ')
@@ -169,11 +170,10 @@
             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()


More information about the Python-checkins mailing list