From e212d0a0b11b24c6c1ab7e39e913b9deed789db7 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 25 Mar 2008 10:36:39 +0000 Subject: [PATCH] * sphinx.builder: Handle unavailability of TOC relations (previous/ next chapter) more gracefully in the HTML builder. --- CHANGES | 3 +++ sphinx/builder.py | 27 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 9617b351b..0127da264 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,9 @@ Changes in trunk * sphinx.ext.autodoc: Record files from which docstrings are included 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) ================================ diff --git a/sphinx/builder.py b/sphinx/builder.py index ca9456cd0..47787609f 100644 --- a/sphinx/builder.py +++ b/sphinx/builder.py @@ -347,22 +347,33 @@ class StandaloneHTMLBuilder(Builder): prev = next = None parents = [] related = self.env.toctree_relations.get(docname) + titles = self.env.titles if related: - prev = {'link': self.get_relative_uri(docname, related[1]), - 'title': self.render_partial(self.env.titles[related[1]])['title']} - next = {'link': self.get_relative_uri(docname, related[2]), - 'title': self.render_partial(self.env.titles[related[2]])['title']} + try: + prev = {'link': self.get_relative_uri(docname, related[1]), + 'title': self.render_partial(titles[related[1]])['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: - parents.append( - {'link': self.get_relative_uri(docname, related[0]), - 'title': self.render_partial(self.env.titles[related[0]])['title']}) + try: + parents.append( + {'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]) if parents: parents.pop() # remove link to the master file; we have a generic # "back to index" link already parents.reverse() - title = self.env.titles.get(docname) + title = titles.get(docname) if title: title = self.render_partial(title)['title'] else: