builders: pep8 fixes

This commit is contained in:
Georg Brandl 2015-03-08 16:24:24 +01:00
parent e97210e520
commit 8bc5823724
11 changed files with 90 additions and 83 deletions

View File

@ -19,7 +19,6 @@ except ImportError:
multiprocessing = threading = None multiprocessing = threading = None
from docutils import nodes from docutils import nodes
from six import string_types
from sphinx.util import i18n, path_stabilize from sphinx.util import i18n, path_stabilize
from sphinx.util.osutil import SEP, relative_uri, find_catalog from sphinx.util.osutil import SEP, relative_uri, find_catalog

View File

@ -33,6 +33,7 @@ except ImportError:
try: try:
import gzip import gzip
def comp_open(filename, mode='rb'): def comp_open(filename, mode='rb'):
return gzip.open(filename + '.gz', mode) return gzip.open(filename + '.gz', mode)
except ImportError: except ImportError:
@ -81,7 +82,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder):
def write_toc(node, parent): def write_toc(node, parent):
if isinstance(node, addnodes.compact_paragraph) or \ if isinstance(node, addnodes.compact_paragraph) or \
isinstance(node, nodes.bullet_list): isinstance(node, nodes.bullet_list):
for subnode in node: for subnode in node:
write_toc(subnode, parent) write_toc(subnode, parent)
elif isinstance(node, nodes.list_item): elif isinstance(node, nodes.list_item):
@ -94,7 +95,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder):
def istoctree(node): def istoctree(node):
return isinstance(node, addnodes.compact_paragraph) and \ return isinstance(node, addnodes.compact_paragraph) and \
'toctree' in node 'toctree' in node
for node in tocdoc.traverse(istoctree): for node in tocdoc.traverse(istoctree):
write_toc(node, chapters) write_toc(node, chapters)

View File

@ -40,7 +40,7 @@ from sphinx.util.console import brown
# output but that may be customized by (re-)setting module attributes, # output but that may be customized by (re-)setting module attributes,
# e.g. from conf.py. # e.g. from conf.py.
_mimetype_template = 'application/epub+zip' # no EOL! _mimetype_template = 'application/epub+zip' # no EOL!
_container_template = u'''\ _container_template = u'''\
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -221,10 +221,10 @@ class EpubBuilder(StandaloneHTMLBuilder):
if isinstance(doctree, nodes.reference) and 'refuri' in doctree: if isinstance(doctree, nodes.reference) and 'refuri' in doctree:
refuri = doctree['refuri'] refuri = doctree['refuri']
if refuri.startswith('http://') or refuri.startswith('https://') \ if refuri.startswith('http://') or refuri.startswith('https://') \
or refuri.startswith('irc:') or refuri.startswith('mailto:'): or refuri.startswith('irc:') or refuri.startswith('mailto:'):
return result return result
classes = doctree.parent.attributes['classes'] classes = doctree.parent.attributes['classes']
for level in range(8, 0, -1): # or range(1, 8)? for level in range(8, 0, -1): # or range(1, 8)?
if (_toctree_template % level) in classes: if (_toctree_template % level) in classes:
result.append({ result.append({
'level': level, 'level': level,
@ -242,11 +242,12 @@ class EpubBuilder(StandaloneHTMLBuilder):
and pre and post files not managed by sphinx. and pre and post files not managed by sphinx.
""" """
doctree = self.env.get_and_resolve_doctree(self.config.master_doc, doctree = self.env.get_and_resolve_doctree(self.config.master_doc,
self, prune_toctrees=False, includehidden=True) self, prune_toctrees=False,
includehidden=True)
self.refnodes = self.get_refnodes(doctree, []) self.refnodes = self.get_refnodes(doctree, [])
master_dir = path.dirname(self.config.master_doc) master_dir = path.dirname(self.config.master_doc)
if master_dir: if master_dir:
master_dir += '/' # XXX or os.sep? master_dir += '/' # XXX or os.sep?
for item in self.refnodes: for item in self.refnodes:
item['refuri'] = master_dir + item['refuri'] item['refuri'] = master_dir + item['refuri']
self.toc_add_files(self.refnodes) self.toc_add_files(self.refnodes)
@ -258,7 +259,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
'level': 1, 'level': 1,
'refuri': self.esc(self.config.master_doc + '.html'), 'refuri': self.esc(self.config.master_doc + '.html'),
'text': ssp(self.esc( 'text': ssp(self.esc(
self.env.titles[self.config.master_doc].astext())) self.env.titles[self.config.master_doc].astext()))
}) })
for file, text in reversed(self.config.epub_pre_files): for file, text in reversed(self.config.epub_pre_files):
refnodes.insert(0, { refnodes.insert(0, {
@ -392,7 +393,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
m = _refuri_re.match(link) m = _refuri_re.match(link)
if m: if m:
subentrylinks[i] = (ismain, subentrylinks[i] = (ismain,
self.fix_fragment(m.group(1), m.group(2))) self.fix_fragment(m.group(1), m.group(2)))
def is_vector_graphics(self, filename): def is_vector_graphics(self, filename):
"""Does the filename extension indicate a vector graphic format?""" """Does the filename extension indicate a vector graphic format?"""
@ -461,8 +462,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
if pagename.startswith('genindex'): if pagename.startswith('genindex'):
self.fix_genindex(addctx['genindexentries']) self.fix_genindex(addctx['genindexentries'])
StandaloneHTMLBuilder.handle_page(self, pagename, addctx, templatename, StandaloneHTMLBuilder.handle_page(self, pagename, addctx, templatename,
outfilename, event_arg) outfilename, event_arg)
# Finish by building the epub file # Finish by building the epub file
def handle_finish(self): def handle_finish(self):
@ -529,9 +529,9 @@ class EpubBuilder(StandaloneHTMLBuilder):
olen = len(outdir) olen = len(outdir)
projectfiles = [] projectfiles = []
self.files = [] self.files = []
self.ignored_files = ['.buildinfo', self.ignored_files = ['.buildinfo', 'mimetype', 'content.opf',
'mimetype', 'content.opf', 'toc.ncx', 'META-INF/container.xml', 'toc.ncx', 'META-INF/container.xml',
self.config.epub_basename + '.epub'] + \ self.config.epub_basename + '.epub'] + \
self.config.epub_exclude_files self.config.epub_exclude_files
for root, dirs, files in os.walk(outdir): for root, dirs, files in os.walk(outdir):
for fn in files: for fn in files:
@ -579,7 +579,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
image, html_tmpl = self.config.epub_cover image, html_tmpl = self.config.epub_cover
image = image.replace(os.sep, '/') image = image.replace(os.sep, '/')
mpos = content_tmpl.rfind('</metadata>') mpos = content_tmpl.rfind('</metadata>')
cpos = content_tmpl.rfind('\n', 0 , mpos) + 1 cpos = content_tmpl.rfind('\n', 0, mpos) + 1
content_tmpl = content_tmpl[:cpos] + \ content_tmpl = content_tmpl[:cpos] + \
_cover_template % {'cover': self.esc(self.make_id(image))} + \ _cover_template % {'cover': self.esc(self.make_id(image))} + \
content_tmpl[cpos:] content_tmpl[cpos:]
@ -596,7 +596,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
}) })
ctx = {'image': self.esc(image), 'title': self.config.project} ctx = {'image': self.esc(image), 'title': self.config.project}
self.handle_page( self.handle_page(
path.splitext(_coverpage_name)[0], ctx, html_tmpl) path.splitext(_coverpage_name)[0], ctx, html_tmpl)
guide = [] guide = []
auto_add_cover = True auto_add_cover = True
@ -611,22 +611,22 @@ class EpubBuilder(StandaloneHTMLBuilder):
if type == 'toc': if type == 'toc':
auto_add_toc = False auto_add_toc = False
guide.append(_guide_template % { guide.append(_guide_template % {
'type': self.esc(type), 'type': self.esc(type),
'title': self.esc(title), 'title': self.esc(title),
'uri': self.esc(uri) 'uri': self.esc(uri)
}) })
if auto_add_cover and html_tmpl: if auto_add_cover and html_tmpl:
guide.append(_guide_template % { guide.append(_guide_template % {
'type': 'cover', 'type': 'cover',
'title': _guide_titles['cover'], 'title': _guide_titles['cover'],
'uri': self.esc(_coverpage_name) 'uri': self.esc(_coverpage_name)
}) })
if auto_add_toc and self.refnodes: if auto_add_toc and self.refnodes:
guide.append(_guide_template % { guide.append(_guide_template % {
'type': 'toc', 'type': 'toc',
'title': _guide_titles['toc'], 'title': _guide_titles['toc'],
'uri': self.esc(self.refnodes[0]['refuri']) 'uri': self.esc(self.refnodes[0]['refuri'])
}) })
projectfiles = '\n'.join(projectfiles) projectfiles = '\n'.join(projectfiles)
spine = '\n'.join(spine) spine = '\n'.join(spine)
guide = '\n'.join(guide) guide = '\n'.join(guide)
@ -635,7 +635,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
f = codecs.open(path.join(outdir, outname), 'w', 'utf-8') f = codecs.open(path.join(outdir, outname), 'w', 'utf-8')
try: try:
f.write(content_tmpl % f.write(content_tmpl %
self.content_metadata(projectfiles, spine, guide)) self.content_metadata(projectfiles, spine, guide))
finally: finally:
f.close() f.close()
@ -719,7 +719,8 @@ class EpubBuilder(StandaloneHTMLBuilder):
if self.config.epub_tocscope == 'default': if self.config.epub_tocscope == 'default':
doctree = self.env.get_and_resolve_doctree(self.config.master_doc, doctree = self.env.get_and_resolve_doctree(self.config.master_doc,
self, prune_toctrees=False, includehidden=False) self, prune_toctrees=False,
includehidden=False)
refnodes = self.get_refnodes(doctree, []) refnodes = self.get_refnodes(doctree, [])
self.toc_add_files(refnodes) self.toc_add_files(refnodes)
else: else:
@ -744,9 +745,9 @@ class EpubBuilder(StandaloneHTMLBuilder):
projectfiles = ['META-INF/container.xml', 'content.opf', 'toc.ncx'] \ projectfiles = ['META-INF/container.xml', 'content.opf', 'toc.ncx'] \
+ self.files + self.files
epub = zipfile.ZipFile(path.join(outdir, outname), 'w', epub = zipfile.ZipFile(path.join(outdir, outname), 'w',
zipfile.ZIP_DEFLATED) zipfile.ZIP_DEFLATED)
epub.write(path.join(outdir, 'mimetype'), 'mimetype', epub.write(path.join(outdir, 'mimetype'), 'mimetype',
zipfile.ZIP_STORED) zipfile.ZIP_STORED)
for file in projectfiles: for file in projectfiles:
fp = path.join(outdir, file) fp = path.join(outdir, file)
epub.write(fp, file, zipfile.ZIP_DEFLATED) epub.write(fp, file, zipfile.ZIP_DEFLATED)

View File

@ -130,6 +130,7 @@ timestamp = time()
tzdelta = datetime.fromtimestamp(timestamp) - \ tzdelta = datetime.fromtimestamp(timestamp) - \
datetime.utcfromtimestamp(timestamp) datetime.utcfromtimestamp(timestamp)
class LocalTimeZone(tzinfo): class LocalTimeZone(tzinfo):
def __init__(self, *args, **kw): def __init__(self, *args, **kw):
@ -213,8 +214,8 @@ class MessageCatalogBuilder(I18nBuilder):
if self.config.gettext_location: if self.config.gettext_location:
# generate "#: file1:line1\n#: file2:line2 ..." # generate "#: file1:line1\n#: file2:line2 ..."
pofile.write("#: %s\n" % "\n#: ".join("%s:%s" % pofile.write("#: %s\n" % "\n#: ".join(
(safe_relpath(source, self.outdir), line) "%s:%s" % (safe_relpath(source, self.outdir), line)
for source, line, _ in positions)) for source, line, _ in positions))
if self.config.gettext_uuid: if self.config.gettext_uuid:
# generate "# uuid1\n# uuid2\n ..." # generate "# uuid1\n# uuid2\n ..."
@ -223,8 +224,8 @@ class MessageCatalogBuilder(I18nBuilder):
# message contains *one* line of text ready for translation # message contains *one* line of text ready for translation
message = message.replace('\\', r'\\'). \ message = message.replace('\\', r'\\'). \
replace('"', r'\"'). \ replace('"', r'\"'). \
replace('\n', '\\n"\n"') replace('\n', '\\n"\n"')
pofile.write('msgid "%s"\nmsgstr ""\n\n' % message) pofile.write('msgid "%s"\nmsgstr ""\n\n' % message)
finally: finally:

View File

@ -78,7 +78,7 @@ class StandaloneHTMLBuilder(Builder):
searchindex_filename = 'searchindex.js' searchindex_filename = 'searchindex.js'
add_permalinks = True add_permalinks = True
embedded = False # for things like HTML help or Qt help: suppresses sidebar embedded = False # for things like HTML help or Qt help: suppresses sidebar
search = True # for things like HTML help and Apple help: suppress search search = True # for things like HTML help and Apple help: suppress search
# This is a class attribute because it is mutated by Sphinx.add_javascript. # This is a class attribute because it is mutated by Sphinx.add_javascript.
script_files = ['_static/jquery.js', '_static/underscore.js', script_files = ['_static/jquery.js', '_static/underscore.js',
@ -194,7 +194,7 @@ class StandaloneHTMLBuilder(Builder):
except Exception: except Exception:
pass pass
if old_config_hash != self.config_hash or \ if old_config_hash != self.config_hash or \
old_tags_hash != self.tags_hash: old_tags_hash != self.tags_hash:
for docname in self.env.found_docs: for docname in self.env.found_docs:
yield docname yield docname
return return
@ -230,8 +230,8 @@ class StandaloneHTMLBuilder(Builder):
if self._publisher is None: if self._publisher is None:
self._publisher = Publisher( self._publisher = Publisher(
source_class = DocTreeInput, source_class = DocTreeInput,
destination_class=StringOutput) destination_class=StringOutput)
self._publisher.set_components('standalone', self._publisher.set_components('standalone',
'restructuredtext', 'pseudoxml') 'restructuredtext', 'pseudoxml')
@ -280,7 +280,7 @@ class StandaloneHTMLBuilder(Builder):
continue continue
# deprecated config value # deprecated config value
if indexname == 'py-modindex' and \ if indexname == 'py-modindex' and \
not self.config.html_use_modindex: not self.config.html_use_modindex:
continue continue
content, collapse = indexcls(domain).generate() content, collapse = indexcls(domain).generate()
if content: if content:
@ -296,10 +296,10 @@ class StandaloneHTMLBuilder(Builder):
self.last_updated = None self.last_updated = None
logo = self.config.html_logo and \ logo = self.config.html_logo and \
path.basename(self.config.html_logo) or '' path.basename(self.config.html_logo) or ''
favicon = self.config.html_favicon and \ favicon = self.config.html_favicon and \
path.basename(self.config.html_favicon) or '' path.basename(self.config.html_favicon) or ''
if favicon and os.path.splitext(favicon)[1] != '.ico': if favicon and os.path.splitext(favicon)[1] != '.ico':
self.warn('html_favicon is not an .ico file') self.warn('html_favicon is not an .ico file')
@ -394,8 +394,9 @@ class StandaloneHTMLBuilder(Builder):
pass pass
related = self.relations.get(related[0]) related = self.relations.get(related[0])
if parents: if parents:
parents.pop() # remove link to the master file; we have a generic # remove link to the master file; we have a generic
# "back to index" link already # "back to index" link already
parents.pop()
parents.reverse() parents.reverse()
# title rendered as HTML # title rendered as HTML
@ -505,7 +506,7 @@ class StandaloneHTMLBuilder(Builder):
# the entries into two columns # the entries into two columns
genindex = self.env.create_index(self) genindex = self.env.create_index(self)
indexcounts = [] indexcounts = []
for _, entries in genindex: for _k, entries in genindex:
indexcounts.append(sum(1 + len(subitems) indexcounts.append(sum(1 + len(subitems)
for _, (_, subitems) in entries)) for _, (_, subitems) in entries))
@ -821,8 +822,7 @@ class StandaloneHTMLBuilder(Builder):
u'# Project: %s\n' u'# Project: %s\n'
u'# Version: %s\n' u'# Version: %s\n'
u'# The remainder of this file is compressed using zlib.\n' u'# The remainder of this file is compressed using zlib.\n'
% (self.config.project, self.config.version) % (self.config.project, self.config.version)).encode('utf-8'))
).encode('utf-8'))
compressor = zlib.compressobj(9) compressor = zlib.compressobj(9)
for domainname, domain in iteritems(self.env.domains): for domainname, domain in iteritems(self.env.domains):
for name, dispname, type, docname, anchor, prio in \ for name, dispname, type, docname, anchor, prio in \
@ -835,8 +835,7 @@ class StandaloneHTMLBuilder(Builder):
dispname = u'-' dispname = u'-'
f.write(compressor.compress( f.write(compressor.compress(
(u'%s %s:%s %s %s %s\n' % (name, domainname, type, (u'%s %s:%s %s %s %s\n' % (name, domainname, type,
prio, uri, dispname) prio, uri, dispname)).encode('utf-8')))
).encode('utf-8')))
f.write(compressor.flush()) f.write(compressor.flush())
finally: finally:
f.close() f.close()
@ -874,13 +873,13 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder):
if docname == 'index': if docname == 'index':
return '' return ''
if docname.endswith(SEP + 'index'): if docname.endswith(SEP + 'index'):
return docname[:-5] # up to sep return docname[:-5] # up to sep
return docname + SEP return docname + SEP
def get_outfilename(self, pagename): def get_outfilename(self, pagename):
if pagename == 'index' or pagename.endswith(SEP + 'index'): if pagename == 'index' or pagename.endswith(SEP + 'index'):
outfilename = path.join(self.outdir, os_path(pagename) outfilename = path.join(self.outdir, os_path(pagename) +
+ self.out_suffix) self.out_suffix)
else: else:
outfilename = path.join(self.outdir, os_path(pagename), outfilename = path.join(self.outdir, os_path(pagename),
'index' + self.out_suffix) 'index' + self.out_suffix)
@ -907,7 +906,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
if docname in self.env.all_docs: if docname in self.env.all_docs:
# all references are on the same page... # all references are on the same page...
return self.config.master_doc + self.out_suffix + \ return self.config.master_doc + self.out_suffix + \
'#document-' + docname '#document-' + docname
else: else:
# chances are this is a html_additional_page # chances are this is a html_additional_page
return docname + self.out_suffix return docname + self.out_suffix
@ -1053,7 +1052,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
if docname == 'index': if docname == 'index':
return '' return ''
if docname.endswith(SEP + 'index'): if docname.endswith(SEP + 'index'):
return docname[:-5] # up to sep return docname[:-5] # up to sep
return docname + SEP return docname + SEP
def dump_context(self, context, filename): def dump_context(self, context, filename):

View File

@ -191,7 +191,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
def open_file(self, outdir, basename, mode='w'): def open_file(self, outdir, basename, mode='w'):
# open a file with the correct encoding for the selected language # open a file with the correct encoding for the selected language
return codecs.open(path.join(outdir, basename), mode, return codecs.open(path.join(outdir, basename), mode,
self.encoding, 'xmlcharrefreplace') self.encoding, 'xmlcharrefreplace')
def handle_finish(self): def handle_finish(self):
self.build_hhx(self.outdir, self.config.htmlhelp_basename) self.build_hhx(self.outdir, self.config.htmlhelp_basename)
@ -220,7 +220,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
staticdir = root.startswith(path.join(outdir, '_static')) staticdir = root.startswith(path.join(outdir, '_static'))
for fn in files: for fn in files:
if (staticdir and not fn.endswith('.js')) or \ if (staticdir and not fn.endswith('.js')) or \
fn.endswith('.html'): fn.endswith('.html'):
print(path.join(root, fn)[olen:].replace(os.sep, '\\'), print(path.join(root, fn)[olen:].replace(os.sep, '\\'),
file=f) file=f)
finally: finally:
@ -239,6 +239,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
# the TOC # the TOC
tocdoc = self.env.get_and_resolve_doctree( tocdoc = self.env.get_and_resolve_doctree(
self.config.master_doc, self, prune_toctrees=False) self.config.master_doc, self, prune_toctrees=False)
def write_toc(node, ullevel=0): def write_toc(node, ullevel=0):
if isinstance(node, nodes.list_item): if isinstance(node, nodes.list_item):
f.write('<LI> ') f.write('<LI> ')
@ -246,7 +247,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
write_toc(subnode, ullevel) write_toc(subnode, ullevel)
elif isinstance(node, nodes.reference): elif isinstance(node, nodes.reference):
link = node['refuri'] link = node['refuri']
title = htmlescape(node.astext()).replace('"','&quot;') title = htmlescape(node.astext()).replace('"', '&quot;')
f.write(object_sitemap % (title, link)) f.write(object_sitemap % (title, link))
elif isinstance(node, nodes.bullet_list): elif isinstance(node, nodes.bullet_list):
if ullevel != 0: if ullevel != 0:
@ -258,9 +259,10 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
elif isinstance(node, addnodes.compact_paragraph): elif isinstance(node, addnodes.compact_paragraph):
for subnode in node: for subnode in node:
write_toc(subnode, ullevel) write_toc(subnode, ullevel)
def istoctree(node): def istoctree(node):
return isinstance(node, addnodes.compact_paragraph) and \ return isinstance(node, addnodes.compact_paragraph) and \
'toctree' in node 'toctree' in node
for node in tocdoc.traverse(istoctree): for node in tocdoc.traverse(istoctree):
write_toc(node) write_toc(node)
f.write(contents_footer) f.write(contents_footer)
@ -272,6 +274,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
f = self.open_file(outdir, outname+'.hhk') f = self.open_file(outdir, outname+'.hhk')
try: try:
f.write('<UL>\n') f.write('<UL>\n')
def write_index(title, refs, subitems): def write_index(title, refs, subitems):
def write_param(name, value): def write_param(name, value):
item = ' <param name="%s" value="%s">\n' % \ item = ' <param name="%s" value="%s">\n' % \

View File

@ -45,7 +45,7 @@ class LaTeXBuilder(Builder):
texescape.init() texescape.init()
def get_outdated_docs(self): def get_outdated_docs(self):
return 'all documents' # for now return 'all documents' # for now
def get_target_uri(self, docname, typ=None): def get_target_uri(self, docname, typ=None):
if docname not in self.docnames: if docname not in self.docnames:
@ -94,9 +94,9 @@ class LaTeXBuilder(Builder):
destination_path=path.join(self.outdir, targetname), destination_path=path.join(self.outdir, targetname),
encoding='utf-8') encoding='utf-8')
self.info("processing " + targetname + "... ", nonl=1) self.info("processing " + targetname + "... ", nonl=1)
doctree = self.assemble_doctree(docname, toctree_only, doctree = self.assemble_doctree(
appendices=((docclass != 'howto') and docname, toctree_only,
self.config.latex_appendices or [])) appendices=((docclass != 'howto') and self.config.latex_appendices or []))
self.post_process_images(doctree) self.post_process_images(doctree)
self.info("writing... ", nonl=1) self.info("writing... ", nonl=1)
doctree.settings = docsettings doctree.settings = docsettings

View File

@ -37,7 +37,7 @@ class ManualPageBuilder(Builder):
'will be written') 'will be written')
def get_outdated_docs(self): def get_outdated_docs(self):
return 'all manpages' # for now return 'all manpages' # for now
def get_target_uri(self, docname, typ=None): def get_target_uri(self, docname, typ=None):
if typ == 'token': if typ == 'token':

View File

@ -111,7 +111,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
StandaloneHTMLBuilder.init(self) StandaloneHTMLBuilder.init(self)
# the output files for HTML help must be .html only # the output files for HTML help must be .html only
self.out_suffix = '.html' self.out_suffix = '.html'
#self.config.html_style = 'traditional.css' # self.config.html_style = 'traditional.css'
def handle_finish(self): def handle_finish(self):
self.build_qhp(self.outdir, self.config.qthelp_basename) self.build_qhp(self.outdir, self.config.qthelp_basename)
@ -122,9 +122,10 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
# sections # sections
tocdoc = self.env.get_and_resolve_doctree(self.config.master_doc, self, tocdoc = self.env.get_and_resolve_doctree(self.config.master_doc, self,
prune_toctrees=False) prune_toctrees=False)
istoctree = lambda node: (
isinstance(node, addnodes.compact_paragraph) def istoctree(node):
and 'toctree' in node) return isinstance(node, addnodes.compact_paragraph) and \
'toctree' in node
sections = [] sections = []
for node in tocdoc.traverse(istoctree): for node in tocdoc.traverse(istoctree):
sections.extend(self.write_toc(node)) sections.extend(self.write_toc(node))
@ -160,10 +161,10 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
imagesdir = path.join(outdir, self.imagedir) imagesdir = path.join(outdir, self.imagedir)
for root, dirs, files in os.walk(outdir): for root, dirs, files in os.walk(outdir):
resourcedir = root.startswith(staticdir) or \ resourcedir = root.startswith(staticdir) or \
root.startswith(imagesdir) root.startswith(imagesdir)
for fn in files: for fn in files:
if (resourcedir and not fn.endswith('.js')) or \ if (resourcedir and not fn.endswith('.js')) or \
fn.endswith('.html'): fn.endswith('.html'):
filename = path.join(root, fn)[olen:] filename = path.join(root, fn)[olen:]
projectfiles.append(file_template % projectfiles.append(file_template %
{'filename': htmlescape(filename)}) {'filename': htmlescape(filename)})
@ -239,7 +240,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
parts.extend(self.write_toc(subnode, indentlevel)) parts.extend(self.write_toc(subnode, indentlevel))
elif isinstance(node, nodes.reference): elif isinstance(node, nodes.reference):
link = node['refuri'] link = node['refuri']
title = htmlescape(node.astext()).replace('"','&quot;') title = htmlescape(node.astext()).replace('"', '&quot;')
item = section_template % {'title': title, 'ref': link} item = section_template % {'title': title, 'ref': link}
item = u' ' * 4 * indentlevel + item item = u' ' * 4 * indentlevel + item
parts.append(item.encode('ascii', 'xmlcharrefreplace')) parts.append(item.encode('ascii', 'xmlcharrefreplace'))
@ -258,7 +259,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
groupdict = matchobj.groupdict() groupdict = matchobj.groupdict()
shortname = groupdict['title'] shortname = groupdict['title']
id = groupdict.get('id') id = groupdict.get('id')
#descr = groupdict.get('descr') # descr = groupdict.get('descr')
if shortname.endswith('()'): if shortname.endswith('()'):
shortname = shortname[:-2] shortname = shortname[:-2]
id = '%s.%s' % (id, shortname) id = '%s.%s' % (id, shortname)
@ -277,17 +278,17 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
keywords = [] keywords = []
title = htmlescape(title) title = htmlescape(title)
# if len(refs) == 0: # XXX # if len(refs) == 0: # XXX
# write_param('See Also', title) # write_param('See Also', title)
if len(refs) == 1: if len(refs) == 1:
keywords.append(self.keyword_item(title, refs[0])) keywords.append(self.keyword_item(title, refs[0]))
elif len(refs) > 1: elif len(refs) > 1:
for i, ref in enumerate(refs): # XXX for i, ref in enumerate(refs): # XXX
# item = (' '*12 + # item = (' '*12 +
# '<keyword name="%s [%d]" ref="%s"/>' % ( # '<keyword name="%s [%d]" ref="%s"/>' % (
# title, i, ref)) # title, i, ref))
# item.encode('ascii', 'xmlcharrefreplace') # item.encode('ascii', 'xmlcharrefreplace')
# keywords.append(item) # keywords.append(item)
keywords.append(self.keyword_item(title, ref)) keywords.append(self.keyword_item(title, ref))
if subitems: if subitems:

View File

@ -88,14 +88,14 @@ class TexinfoBuilder(Builder):
name = 'texinfo' name = 'texinfo'
format = 'texinfo' format = 'texinfo'
supported_image_types = ['image/png', 'image/jpeg', supported_image_types = ['image/png', 'image/jpeg',
'image/gif',] 'image/gif']
def init(self): def init(self):
self.docnames = [] self.docnames = []
self.document_data = [] self.document_data = []
def get_outdated_docs(self): def get_outdated_docs(self):
return 'all documents' # for now return 'all documents' # for now
def get_target_uri(self, docname, typ=None): def get_target_uri(self, docname, typ=None):
if docname not in self.docnames: if docname not in self.docnames:
@ -141,7 +141,8 @@ class TexinfoBuilder(Builder):
destination_path=path.join(self.outdir, targetname), destination_path=path.join(self.outdir, targetname),
encoding='utf-8') encoding='utf-8')
self.info("processing " + targetname + "... ", nonl=1) self.info("processing " + targetname + "... ", nonl=1)
doctree = self.assemble_doctree(docname, toctree_only, doctree = self.assemble_doctree(
docname, toctree_only,
appendices=(self.config.texinfo_appendices or [])) appendices=(self.config.texinfo_appendices or []))
self.info("writing... ", nonl=1) self.info("writing... ", nonl=1)
self.post_process_images(doctree) self.post_process_images(doctree)

View File

@ -19,6 +19,7 @@ from sphinx.builders import Builder
from sphinx.util.osutil import ensuredir, os_path from sphinx.util.osutil import ensuredir, os_path
from sphinx.writers.xml import XMLWriter, PseudoXMLWriter from sphinx.writers.xml import XMLWriter, PseudoXMLWriter
class XMLBuilder(Builder): class XMLBuilder(Builder):
""" """
Builds Docutils-native XML. Builds Docutils-native XML.