[Python-checkins] r64200 - in doctools/trunk: CHANGES doc/changes.rst doc/markup/misc.rst sphinx/environment.py

georg.brandl python-checkins at python.org
Thu Jun 12 23:56:06 CEST 2008


Author: georg.brandl
Date: Thu Jun 12 23:56:06 2008
New Revision: 64200

Log:
Add maxdepth for TOCs.


Modified:
   doctools/trunk/CHANGES
   doctools/trunk/doc/changes.rst
   doctools/trunk/doc/markup/misc.rst
   doctools/trunk/sphinx/environment.py

Modified: doctools/trunk/CHANGES
==============================================================================
--- doctools/trunk/CHANGES	(original)
+++ doctools/trunk/CHANGES	Thu Jun 12 23:56:06 2008
@@ -38,6 +38,9 @@
 
 * Added TextBuilder to create plain-text output.
 
+* ``tocdepth`` can be given as a file-wide metadata entry, and specifies
+  the maximum depth of a TOC of this file.
+
 Bugs fixed
 ----------
 

Modified: doctools/trunk/doc/changes.rst
==============================================================================
--- doctools/trunk/doc/changes.rst	(original)
+++ doctools/trunk/doc/changes.rst	Thu Jun 12 23:56:06 2008
@@ -1,3 +1,5 @@
+:tocdepth: 2
+
 .. _changes:
 
 Changes in Sphinx

Modified: doctools/trunk/doc/markup/misc.rst
==============================================================================
--- doctools/trunk/doc/markup/misc.rst	(original)
+++ doctools/trunk/doc/markup/misc.rst	Thu Jun 12 23:56:06 2008
@@ -16,7 +16,12 @@
 other metadata.  In Sphinx, the docinfo is used as metadata, too, but not
 displayed in the output.
 
-At the moment, only one metadata field is recognized:
+At the moment, these metadata fields are recognized:
+
+``tocdepth``
+   The maximum depth for a table of contents of this file.
+
+   .. versionadded:: 0.4
 
 ``nocomments``
    If set, the web application won't display a comment form for a page generated

Modified: doctools/trunk/sphinx/environment.py
==============================================================================
--- doctools/trunk/sphinx/environment.py	(original)
+++ doctools/trunk/sphinx/environment.py	Thu Jun 12 23:56:06 2008
@@ -605,7 +605,12 @@
         """Build a TOC from the doctree and store it in the inventory."""
         numentries = [0] # nonlocal again...
 
-        def build_toc(node):
+        try:
+            maxdepth = int(self.metadata[docname].get('tocdepth', 0))
+        except ValueError:
+            maxdepth = 0
+
+        def build_toc(node, depth=1):
             entries = []
             for subnode in node:
                 if isinstance(subnode, addnodes.toctree):
@@ -636,7 +641,8 @@
                                             *nodetext)
                 para = addnodes.compact_paragraph('', '', reference)
                 item = nodes.list_item('', para)
-                item += build_toc(subnode)
+                if maxdepth == 0 or depth < maxdepth:
+                    item += build_toc(subnode, depth+1)
                 entries.append(item)
             if entries:
                 return nodes.bullet_list('', *entries)
@@ -749,7 +755,7 @@
                     else:
                         _walk_depth(subnode, depth+1, maxdepth, titleoverrides)
 
-       def _entries_from_toctree(toctreenode, separate=False):
+        def _entries_from_toctree(toctreenode, separate=False):
             """Return TOC entries for a toctree node."""
             includefiles = map(str, toctreenode['includefiles'])
 


More information about the Python-checkins mailing list