Currently (sphinx 0.6.5) the "toctree()" function that can be called
from template code (such as layout.html) only takes one parameter. The
file environment.py contains a function get_toctree_for(self, docname,
builder, collapse) which calls self.resolve_toctree(docname, builder,
toctreenode, prune=True, collapse=collapse). The resolve_toctree()
actually accepts another parameter, titles_only, the value of which
should be settable from the html template (layout.html). I use this
for http://pubsub.sourceforge.net.
The following fix is simple and means that any *new* "toc_tree()"
template parameters handled by resolve_toctree() can be supported
without changing any code outside of resolve_toctreee() : replace the
keyword args that are template-related by a **templKw parameter to
_get_local_toctree() and get_toctree_for() and pass it to
resolve_toctree(). Only two files are affected, environment.py and
builders/html.py (the other builders do not override get_toctree_for()
AFAICT):
--- C:/Python24/Lib/site-packages/Sphinx-0.6.5-py2.4.egg_orig/sphinx/
environment.py Thu Mar 18 09:59:23 2010
+++ C:/Python24/Lib/site-packages/Sphinx-0.6.5-py2.4.egg/sphinx/
environment.py Thu Mar 18 09:57:40 2010
@@ -933,12 +933,12 @@
node['refuri'] = node['anchorname'] or '#'
return toc
- def get_toctree_for(self, docname, builder, collapse):
+ def get_toctree_for(self, docname, builder, **tmplKw):
"""Return the global TOC nodetree."""
doctree = self.get_doctree(self.config.master_doc)
for toctreenode in doctree.traverse(addnodes.toctree):
result = self.resolve_toctree(docname, builder,
toctreenode,
- prune=True,
collapse=collapse)
+ prune=True, **tmplKw)
if result is not None:
return result
For html.py, the patch is:
--- C:/Python24/Lib/site-packages/Sphinx-0.6.5-py2.4.egg_orig/sphinx/
builders/html.py Thu Mar 18 09:59:25 2010
+++ C:/Python24/Lib/site-packages/Sphinx-0.6.5-py2.4.egg/sphinx/
builders/html.py Thu Mar 18 09:55:40 2010
@@ -623,9 +623,9 @@
if self.indexer is not None and title:
self.indexer.feed(pagename, title, doctree)
- def _get_local_toctree(self, docname, collapse=True):
+ def _get_local_toctree(self, docname, **tmplKw):
return self.render_partial(self.env.get_toctree_for(
- docname, self, collapse))['fragment']
+ docname, self, **tmplKw))['fragment']
def get_outfilename(self, pagename):
return path.join(self.outdir, os_path(pagename) +
self.out_suffix)
Any chance this could be included in next release? Thanks,
Oliver
--
You received this message because you are subscribed to the Google Groups
"sphinx-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sphinx-dev?hl=en.