summaryrefslogtreecommitdiff
path: root/sphinx/builders/html.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/builders/html.py')
-rw-r--r--sphinx/builders/html.py83
1 files changed, 54 insertions, 29 deletions
diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py
index bfbe299a9..6d9a2ba87 100644
--- a/sphinx/builders/html.py
+++ b/sphinx/builders/html.py
@@ -27,7 +27,8 @@ from sphinx.search import js_index
from sphinx.builders import Builder, ENV_PICKLE_FILENAME
from sphinx.highlighting import PygmentsBridge
from sphinx.util.console import bold
-from sphinx.writers.html import HTMLWriter, HTMLTranslator, SmartyPantsHTMLTranslator
+from sphinx.writers.html import HTMLWriter, HTMLTranslator, \
+ SmartyPantsHTMLTranslator
try:
import json
@@ -88,7 +89,8 @@ class StandaloneHTMLBuilder(Builder):
def init_translator_class(self):
if self.config.html_translator_class:
self.translator_class = self.app.import_object(
- self.config.html_translator_class, 'html_translator_class setting')
+ self.config.html_translator_class,
+ 'html_translator_class setting')
elif self.config.html_use_smartypants:
self.translator_class = SmartyPantsHTMLTranslator
else:
@@ -141,7 +143,8 @@ class StandaloneHTMLBuilder(Builder):
if self.config.html_use_index:
rellinks.append(('genindex', _('General Index'), 'I', _('index')))
if self.config.html_use_modindex and self.env.modules:
- rellinks.append(('modindex', _('Global Module Index'), 'M', _('modules')))
+ rellinks.append(('modindex', _('Global Module Index'),
+ 'M', _('modules')))
if self.config.html_style is not None:
stylename = self.config.html_style
@@ -184,18 +187,23 @@ class StandaloneHTMLBuilder(Builder):
titles = self.env.titles
if related and related[2]:
try:
- next = {'link': self.get_relative_uri(docname, related[2]),
- 'title': self.render_partial(titles[related[2]])['title']}
+ next = {
+ 'link': self.get_relative_uri(docname, related[2]),
+ 'title': self.render_partial(titles[related[2]])['title']
+ }
rellinks.append((related[2], next['title'], 'N', _('next')))
except KeyError:
next = None
if related and related[1]:
try:
- prev = {'link': self.get_relative_uri(docname, related[1]),
- 'title': self.render_partial(titles[related[1]])['title']}
+ prev = {
+ 'link': self.get_relative_uri(docname, related[1]),
+ 'title': self.render_partial(titles[related[1]])['title']
+ }
rellinks.append((related[1], prev['title'], 'P', _('previous')))
except KeyError:
- # the relation is (somehow) not in the TOC tree, handle that gracefully
+ # the relation is (somehow) not in the TOC tree, handle
+ # that gracefully
prev = None
while related and related[0]:
try:
@@ -219,6 +227,9 @@ class StandaloneHTMLBuilder(Builder):
# metadata for the document
meta = self.env.metadata.get(docname)
+ # TOC
+ toc = self.render_partial(self.env.get_toc_for(docname))['fragment']
+
return dict(
parents = parents,
prev = prev,
@@ -229,7 +240,7 @@ class StandaloneHTMLBuilder(Builder):
metatags = metatags,
rellinks = rellinks,
sourcename = sourcename,
- toc = self.render_partial(self.env.get_toc_for(docname))['fragment'],
+ toc = toc,
# only display a TOC if there's more than one item to show
display_toc = (self.env.toc_num_entries[docname] > 1),
)
@@ -272,12 +283,15 @@ class StandaloneHTMLBuilder(Builder):
self.info(' genindex', nonl=1)
if self.config.html_split_index:
- self.handle_page('genindex', genindexcontext, 'genindex-split.html')
- self.handle_page('genindex-all', genindexcontext, 'genindex.html')
+ self.handle_page('genindex', genindexcontext,
+ 'genindex-split.html')
+ self.handle_page('genindex-all', genindexcontext,
+ 'genindex.html')
for (key, entries), count in zip(genindex, indexcounts):
ctx = {'key': key, 'entries': entries, 'count': count,
'genindexentries': genindex}
- self.handle_page('genindex-' + key, ctx, 'genindex-single.html')
+ self.handle_page('genindex-' + key, ctx,
+ 'genindex-single.html')
else:
self.handle_page('genindex', genindexcontext, 'genindex.html')
@@ -318,11 +332,13 @@ class StandaloneHTMLBuilder(Builder):
elif not pmn.startswith(tn):
# submodule without parent in list, add dummy entry
cg += 1
- modindexentries.append([tn, True, cg, False, '', '', [], False])
+ modindexentries.append([tn, True, cg,
+ False, '', '', [], False])
else:
num_toplevels += 1
cg += 1
- modindexentries.append([mn, False, cg, (tn != mn), fn, sy, pl, dep])
+ modindexentries.append([mn, False, cg, (tn != mn),
+ fn, sy, pl, dep])
pmn = mn
fl = mn[0].lower()
platforms = sorted(platforms)
@@ -430,7 +446,8 @@ class StandaloneHTMLBuilder(Builder):
if docname not in self.env.all_docs:
yield docname
continue
- targetname = self.env.doc2path(docname, self.outdir, self.out_suffix)
+ targetname = self.env.doc2path(docname, self.outdir,
+ self.out_suffix)
try:
targetmtime = path.getmtime(targetname)
except Exception:
@@ -454,8 +471,9 @@ class StandaloneHTMLBuilder(Builder):
f.close()
except (IOError, OSError, ValueError):
if keep:
- self.warn("search index couldn't be loaded, but not all documents "
- "will be built: the index will be incomplete.")
+ self.warn('search index couldn\'t be loaded, but not all '
+ 'documents will be built: the index will be '
+ 'incomplete.')
# delete all entries for files that will be rebuilt
self.indexer.prune(keep)
@@ -485,12 +503,15 @@ class StandaloneHTMLBuilder(Builder):
ctx['customsidebar'] = self.config.html_sidebars.get(pagename)
ctx.update(addctx)
- self.app.emit('html-page-context', pagename, templatename, ctx, event_arg)
+ self.app.emit('html-page-context', pagename, templatename,
+ ctx, event_arg)
output = self.templates.render(templatename, ctx)
if not outfilename:
- outfilename = path.join(self.outdir, os_path(pagename) + self.out_suffix)
- ensuredir(path.dirname(outfilename)) # normally different from self.outdir
+ outfilename = path.join(self.outdir,
+ os_path(pagename) + self.out_suffix)
+ # outfilename's path is in general different from self.outdir
+ ensuredir(path.dirname(outfilename))
try:
f = codecs.open(outfilename, 'w', 'utf-8')
try:
@@ -501,7 +522,8 @@ class StandaloneHTMLBuilder(Builder):
self.warn("Error writing file %s: %s" % (outfilename, err))
if self.copysource and ctx.get('sourcename'):
# copy the source file for the "show source" link
- source_name = path.join(self.outdir, '_sources', os_path(ctx['sourcename']))
+ source_name = path.join(self.outdir, '_sources',
+ os_path(ctx['sourcename']))
ensuredir(path.dirname(source_name))
shutil.copyfile(self.env.doc2path(pagename), source_name)
@@ -509,8 +531,8 @@ class StandaloneHTMLBuilder(Builder):
self.info(bold('dumping search index... '), nonl=True)
self.indexer.prune(self.env.all_docs)
searchindexfn = path.join(self.outdir, self.searchindex_filename)
- # first write to a temporary file, so that if dumping fails, the existing
- # index won't be overwritten
+ # first write to a temporary file, so that if dumping fails,
+ # the existing index won't be overwritten
f = open(searchindexfn + '.tmp', 'wb')
try:
self.indexer.dump(f, self.indexer_format)
@@ -528,7 +550,8 @@ class StandaloneHTMLBuilder(Builder):
for modname, info in self.env.modules.iteritems():
f.write('%s mod %s\n' % (modname, self.get_target_uri(info[0])))
for refname, (docname, desctype) in self.env.descrefs.iteritems():
- f.write('%s %s %s\n' % (refname, desctype, self.get_target_uri(docname)))
+ f.write('%s %s %s\n' % (refname, desctype,
+ self.get_target_uri(docname)))
finally:
f.close()
self.info('done')
@@ -568,9 +591,11 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
ctx['customsidebar'] = sidebarfile
if not outfilename:
- outfilename = path.join(self.outdir, os_path(pagename) + self.out_suffix)
+ outfilename = path.join(self.outdir,
+ os_path(pagename) + self.out_suffix)
- self.app.emit('html-page-context', pagename, templatename, ctx, event_arg)
+ self.app.emit('html-page-context', pagename, templatename,
+ ctx, event_arg)
ensuredir(path.dirname(outfilename))
f = open(outfilename, 'wb')
@@ -638,7 +663,7 @@ class JSONHTMLBuilder(SerializingHTMLBuilder):
def init(self):
if json is None:
from sphinx.application import SphinxError
- raise SphinxError('The module simplejson (or json in Python >= 2.6) '
- 'is not available. The JSONHTMLBuilder builder '
- 'will not work.')
+ raise SphinxError(
+ 'The module simplejson (or json in Python >= 2.6) '
+ 'is not available. The JSONHTMLBuilder builder will not work.')
SerializingHTMLBuilder.init(self)