* sphinx.builder: Handle unavailability of TOC relations (previous/

next chapter) more gracefully in the HTML builder.
This commit is contained in:
Georg Brandl 2008-03-25 10:36:39 +00:00
parent 6433cca6a8
commit e212d0a0b1
2 changed files with 22 additions and 8 deletions

View File

@ -10,6 +10,9 @@ Changes in trunk
* sphinx.ext.autodoc: Record files from which docstrings are included * sphinx.ext.autodoc: Record files from which docstrings are included
as dependencies. as dependencies.
* sphinx.builder: Handle unavailability of TOC relations (previous/
next chapter) more gracefully in the HTML builder.
Release 0.1.61843 (Mar 24, 2008) Release 0.1.61843 (Mar 24, 2008)
================================ ================================

View File

@ -347,22 +347,33 @@ class StandaloneHTMLBuilder(Builder):
prev = next = None prev = next = None
parents = [] parents = []
related = self.env.toctree_relations.get(docname) related = self.env.toctree_relations.get(docname)
titles = self.env.titles
if related: if related:
prev = {'link': self.get_relative_uri(docname, related[1]), try:
'title': self.render_partial(self.env.titles[related[1]])['title']} prev = {'link': self.get_relative_uri(docname, related[1]),
next = {'link': self.get_relative_uri(docname, related[2]), 'title': self.render_partial(titles[related[1]])['title']}
'title': self.render_partial(self.env.titles[related[2]])['title']} except KeyError:
# the relation is (somehow) not in the TOC tree, handle that gracefully
prev = None
try:
next = {'link': self.get_relative_uri(docname, related[2]),
'title': self.render_partial(titles[related[2]])['title']}
except KeyError:
next = None
while related: while related:
parents.append( try:
{'link': self.get_relative_uri(docname, related[0]), parents.append(
'title': self.render_partial(self.env.titles[related[0]])['title']}) {'link': self.get_relative_uri(docname, related[0]),
'title': self.render_partial(titles[related[0]])['title']})
except KeyError:
pass
related = self.env.toctree_relations.get(related[0]) related = self.env.toctree_relations.get(related[0])
if parents: if parents:
parents.pop() # remove link to the master file; we have a generic parents.pop() # remove link to the master file; we have a generic
# "back to index" link already # "back to index" link already
parents.reverse() parents.reverse()
title = self.env.titles.get(docname) title = titles.get(docname)
if title: if title:
title = self.render_partial(title)['title'] title = self.render_partial(title)['title']
else: else: