mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
writers: pep8 fixes
This commit is contained in:
parent
d24107695b
commit
e97210e520
@ -63,8 +63,8 @@ class ManualPageTranslator(BaseTranslator):
|
||||
if builder.config.today:
|
||||
self._docinfo['date'] = builder.config.today
|
||||
else:
|
||||
self._docinfo['date'] = ustrftime(builder.config.today_fmt
|
||||
or _('%B %d, %Y'))
|
||||
self._docinfo['date'] = ustrftime(builder.config.today_fmt or
|
||||
_('%B %d, %Y'))
|
||||
self._docinfo['copyright'] = builder.config.copyright
|
||||
self._docinfo['version'] = builder.config.version
|
||||
self._docinfo['manual_group'] = builder.config.project
|
||||
@ -77,7 +77,6 @@ class ManualPageTranslator(BaseTranslator):
|
||||
for label, translation in admonitionlabels.items():
|
||||
self.language.labels[label] = self.deunicode(translation)
|
||||
|
||||
|
||||
# overwritten -- added quotes around all .TH arguments
|
||||
def header(self):
|
||||
tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\""
|
||||
@ -88,43 +87,51 @@ class ManualPageTranslator(BaseTranslator):
|
||||
|
||||
def visit_start_of_file(self, node):
|
||||
pass
|
||||
|
||||
def depart_start_of_file(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc(self, node):
|
||||
self.visit_definition_list(node)
|
||||
|
||||
def depart_desc(self, node):
|
||||
self.depart_definition_list(node)
|
||||
|
||||
def visit_desc_signature(self, node):
|
||||
self.visit_definition_list_item(node)
|
||||
self.visit_term(node)
|
||||
|
||||
def depart_desc_signature(self, node):
|
||||
self.depart_term(node)
|
||||
|
||||
def visit_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_returns(self, node):
|
||||
self.body.append(' -> ')
|
||||
|
||||
def depart_desc_returns(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_parameterlist(self, node):
|
||||
self.body.append('(')
|
||||
self.first_param = 1
|
||||
|
||||
def depart_desc_parameterlist(self, node):
|
||||
self.body.append(')')
|
||||
|
||||
@ -133,26 +140,31 @@ class ManualPageTranslator(BaseTranslator):
|
||||
self.body.append(', ')
|
||||
else:
|
||||
self.first_param = 0
|
||||
|
||||
def depart_desc_parameter(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_optional(self, node):
|
||||
self.body.append('[')
|
||||
|
||||
def depart_desc_optional(self, node):
|
||||
self.body.append(']')
|
||||
|
||||
def visit_desc_annotation(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_annotation(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_content(self, node):
|
||||
self.visit_definition(node)
|
||||
|
||||
def depart_desc_content(self, node):
|
||||
self.depart_definition(node)
|
||||
|
||||
def visit_versionmodified(self, node):
|
||||
self.visit_paragraph(node)
|
||||
|
||||
def depart_versionmodified(self, node):
|
||||
self.depart_paragraph(node)
|
||||
|
||||
@ -180,11 +192,13 @@ class ManualPageTranslator(BaseTranslator):
|
||||
raise nodes.SkipNode
|
||||
else:
|
||||
self.body.append('.sp\n')
|
||||
|
||||
def depart_rubric(self, node):
|
||||
pass
|
||||
|
||||
def visit_seealso(self, node):
|
||||
self.visit_admonition(node, 'seealso')
|
||||
|
||||
def depart_seealso(self, node):
|
||||
self.depart_admonition(node)
|
||||
|
||||
@ -214,6 +228,7 @@ class ManualPageTranslator(BaseTranslator):
|
||||
|
||||
def visit_production(self, node):
|
||||
pass
|
||||
|
||||
def depart_production(self, node):
|
||||
pass
|
||||
|
||||
@ -227,17 +242,17 @@ class ManualPageTranslator(BaseTranslator):
|
||||
# overwritten -- don't visit inner marked up nodes
|
||||
def visit_reference(self, node):
|
||||
self.body.append(self.defs['reference'][0])
|
||||
self.visit_Text(node) # avoid repeating escaping code... fine since
|
||||
# visit_Text calls astext() and only works
|
||||
# on that afterwards
|
||||
# avoid repeating escaping code... fine since
|
||||
# visit_Text calls astext() and only works on that afterwards
|
||||
self.visit_Text(node)
|
||||
self.body.append(self.defs['reference'][1])
|
||||
|
||||
uri = node.get('refuri', '')
|
||||
if uri.startswith('mailto:') or uri.startswith('http:') or \
|
||||
uri.startswith('https:') or uri.startswith('ftp:'):
|
||||
uri.startswith('https:') or uri.startswith('ftp:'):
|
||||
# if configured, put the URL after the link
|
||||
if self.builder.config.man_show_urls and \
|
||||
node.astext() != uri:
|
||||
node.astext() != uri:
|
||||
if uri.startswith('mailto:'):
|
||||
uri = uri[7:]
|
||||
self.body.extend([
|
||||
@ -254,21 +269,25 @@ class ManualPageTranslator(BaseTranslator):
|
||||
def visit_centered(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('.sp\n.ce\n')
|
||||
|
||||
def depart_centered(self, node):
|
||||
self.body.append('\n.ce 0\n')
|
||||
|
||||
def visit_compact_paragraph(self, node):
|
||||
pass
|
||||
|
||||
def depart_compact_paragraph(self, node):
|
||||
pass
|
||||
|
||||
def visit_highlightlang(self, node):
|
||||
pass
|
||||
|
||||
def depart_highlightlang(self, node):
|
||||
pass
|
||||
|
||||
def visit_download_reference(self, node):
|
||||
pass
|
||||
|
||||
def depart_download_reference(self, node):
|
||||
pass
|
||||
|
||||
@ -283,6 +302,7 @@ class ManualPageTranslator(BaseTranslator):
|
||||
|
||||
def visit_glossary(self, node):
|
||||
pass
|
||||
|
||||
def depart_glossary(self, node):
|
||||
pass
|
||||
|
||||
@ -295,26 +315,31 @@ class ManualPageTranslator(BaseTranslator):
|
||||
|
||||
def visit_hlist(self, node):
|
||||
self.visit_bullet_list(node)
|
||||
|
||||
def depart_hlist(self, node):
|
||||
self.depart_bullet_list(node)
|
||||
|
||||
def visit_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def depart_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def visit_literal_emphasis(self, node):
|
||||
return self.visit_emphasis(node)
|
||||
|
||||
def depart_literal_emphasis(self, node):
|
||||
return self.depart_emphasis(node)
|
||||
|
||||
def visit_literal_strong(self, node):
|
||||
return self.visit_strong(node)
|
||||
|
||||
def depart_literal_strong(self, node):
|
||||
return self.depart_strong(node)
|
||||
|
||||
def visit_abbreviation(self, node):
|
||||
pass
|
||||
|
||||
def depart_abbreviation(self, node):
|
||||
pass
|
||||
|
||||
@ -332,6 +357,7 @@ class ManualPageTranslator(BaseTranslator):
|
||||
self.deunicode(node.astext().upper()))
|
||||
raise nodes.SkipNode
|
||||
return BaseTranslator.visit_title(self, node)
|
||||
|
||||
def depart_title(self, node):
|
||||
if isinstance(node.parent, addnodes.seealso):
|
||||
self.body.append('"\n')
|
||||
@ -348,6 +374,7 @@ class ManualPageTranslator(BaseTranslator):
|
||||
|
||||
def visit_inline(self, node):
|
||||
pass
|
||||
|
||||
def depart_inline(self, node):
|
||||
pass
|
||||
|
||||
|
@ -109,7 +109,7 @@ class TexinfoWriter(writers.Writer):
|
||||
('Dir entry', ['--texinfo-dir-entry'], {'default': ''}),
|
||||
('Description', ['--texinfo-dir-description'], {'default': ''}),
|
||||
('Category', ['--texinfo-dir-category'], {'default':
|
||||
'Miscellaneous'})))
|
||||
'Miscellaneous'})))
|
||||
|
||||
settings_defaults = {}
|
||||
|
||||
@ -149,16 +149,16 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
'project': '',
|
||||
'release': '',
|
||||
'title': '',
|
||||
}
|
||||
}
|
||||
|
||||
def __init__(self, document, builder):
|
||||
nodes.NodeVisitor.__init__(self, document)
|
||||
self.builder = builder
|
||||
self.init_settings()
|
||||
|
||||
self.written_ids = set() # node names and anchors in output
|
||||
self.referenced_ids = set() # node names and anchors that should
|
||||
# be in output
|
||||
self.written_ids = set() # node names and anchors in output
|
||||
# node names and anchors that should be in output
|
||||
self.referenced_ids = set()
|
||||
self.indices = [] # (node name, content)
|
||||
self.short_ids = {} # anchors --> short ids
|
||||
self.node_names = {} # node name --> node's name to display
|
||||
@ -202,24 +202,24 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.elements['body'] = self.fragment
|
||||
self.output = TEMPLATE % self.elements
|
||||
|
||||
## Helper routines
|
||||
# -- Helper routines
|
||||
|
||||
def init_settings(self):
|
||||
settings = self.settings = self.document.settings
|
||||
elements = self.elements = self.default_elements.copy()
|
||||
elements.update({
|
||||
# if empty, the title is set to the first section title
|
||||
'title': settings.title,
|
||||
'author': settings.author,
|
||||
# if empty, use basename of input file
|
||||
'filename': settings.texinfo_filename,
|
||||
'release': self.escape(self.builder.config.release),
|
||||
'project': self.escape(self.builder.config.project),
|
||||
'copyright': self.escape(self.builder.config.copyright),
|
||||
'date': self.escape(self.builder.config.today or
|
||||
ustrftime(self.builder.config.today_fmt
|
||||
or _('%B %d, %Y')))
|
||||
})
|
||||
# if empty, the title is set to the first section title
|
||||
'title': settings.title,
|
||||
'author': settings.author,
|
||||
# if empty, use basename of input file
|
||||
'filename': settings.texinfo_filename,
|
||||
'release': self.escape(self.builder.config.release),
|
||||
'project': self.escape(self.builder.config.project),
|
||||
'copyright': self.escape(self.builder.config.copyright),
|
||||
'date': self.escape(self.builder.config.today or
|
||||
ustrftime(self.builder.config.today_fmt or
|
||||
_('%B %d, %Y')))
|
||||
})
|
||||
# title
|
||||
title = elements['title']
|
||||
if not title:
|
||||
@ -256,7 +256,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
node_id = self.escape_id(name)
|
||||
nth, suffix = 1, ''
|
||||
while node_id + suffix in self.written_ids or \
|
||||
node_id + suffix in self.node_names:
|
||||
node_id + suffix in self.node_names:
|
||||
nth += 1
|
||||
suffix = '<%s>' % nth
|
||||
node_id += suffix
|
||||
@ -329,7 +329,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
rellinks['Top'][0] = first
|
||||
rellinks[first][1] = 'Top'
|
||||
|
||||
## Escaping
|
||||
# -- Escaping
|
||||
# Which characters to escape depends on the context. In some cases,
|
||||
# namely menus and node names, it's not possible to escape certain
|
||||
# characters.
|
||||
@ -408,8 +408,8 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.body.append('\n@menu\n')
|
||||
self.add_menu_entries(entries)
|
||||
if (node_name != 'Top' or
|
||||
not self.node_menus[entries[0]] or
|
||||
self.builder.config.texinfo_no_detailmenu):
|
||||
not self.node_menus[entries[0]] or
|
||||
self.builder.config.texinfo_no_detailmenu):
|
||||
self.body.append('\n@end menu\n')
|
||||
return
|
||||
|
||||
@ -483,7 +483,6 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
# TODO: move this to sphinx.util
|
||||
|
||||
def collect_footnotes(self, node):
|
||||
fnotes = {}
|
||||
def footnotes_under(n):
|
||||
if isinstance(n, nodes.footnote):
|
||||
yield n
|
||||
@ -493,12 +492,13 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
continue
|
||||
for k in footnotes_under(c):
|
||||
yield k
|
||||
fnotes = {}
|
||||
for fn in footnotes_under(node):
|
||||
num = fn.children[0].astext().strip()
|
||||
fnotes[num] = [collected_footnote(*fn.children), False]
|
||||
return fnotes
|
||||
|
||||
## xref handling
|
||||
# -- xref handling
|
||||
|
||||
def get_short_id(self, id):
|
||||
"""Return a shorter 'id' associated with ``id``."""
|
||||
@ -529,13 +529,14 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.referenced_ids.add(sid)
|
||||
self.referenced_ids.add(self.escape_id(id))
|
||||
|
||||
## Visiting
|
||||
# -- Visiting
|
||||
|
||||
def visit_document(self, node):
|
||||
self.footnotestack.append(self.collect_footnotes(node))
|
||||
self.curfilestack.append(node.get('docname', ''))
|
||||
if 'docname' in node:
|
||||
self.add_anchor(':doc', node)
|
||||
|
||||
def depart_document(self, node):
|
||||
self.footnotestack.pop()
|
||||
self.curfilestack.pop()
|
||||
@ -548,6 +549,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
# prevent "--" and "---" conversion
|
||||
s = s.replace('-', '@w{-}')
|
||||
self.body.append(s)
|
||||
|
||||
def depart_Text(self, node):
|
||||
pass
|
||||
|
||||
@ -579,13 +581,13 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
'@section',
|
||||
'@subsection',
|
||||
'@subsubsection',
|
||||
)
|
||||
)
|
||||
|
||||
rubrics = (
|
||||
'@heading',
|
||||
'@subheading',
|
||||
'@subsubheading',
|
||||
)
|
||||
)
|
||||
|
||||
def visit_title(self, node):
|
||||
if not self.seen_title:
|
||||
@ -620,15 +622,17 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
except IndexError:
|
||||
rubric = self.rubrics[-1]
|
||||
self.body.append('\n%s ' % rubric)
|
||||
|
||||
def depart_rubric(self, node):
|
||||
self.body.append('\n\n')
|
||||
|
||||
def visit_subtitle(self, node):
|
||||
self.body.append('\n\n@noindent\n')
|
||||
|
||||
def depart_subtitle(self, node):
|
||||
self.body.append('\n\n')
|
||||
|
||||
## References
|
||||
# -- References
|
||||
|
||||
def visit_target(self, node):
|
||||
# postpone the labels until after the sectioning command
|
||||
@ -653,6 +657,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.add_anchor(node['refid'], node)
|
||||
for id in node['ids']:
|
||||
self.add_anchor(id, node)
|
||||
|
||||
def depart_target(self, node):
|
||||
pass
|
||||
|
||||
@ -732,21 +737,24 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.body.append('@cite{%s}' % self.escape_arg(text))
|
||||
raise nodes.SkipNode
|
||||
|
||||
## Blocks
|
||||
# -- Blocks
|
||||
|
||||
def visit_paragraph(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def depart_paragraph(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def visit_block_quote(self, node):
|
||||
self.body.append('\n@quotation\n')
|
||||
|
||||
def depart_block_quote(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end quotation\n')
|
||||
|
||||
def visit_literal_block(self, node):
|
||||
self.body.append('\n@example\n')
|
||||
|
||||
def depart_literal_block(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end example\n')
|
||||
@ -758,6 +766,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
if not isinstance(node.parent, nodes.line_block):
|
||||
self.body.append('\n\n')
|
||||
self.body.append('@display\n')
|
||||
|
||||
def depart_line_block(self, node):
|
||||
self.body.append('@end display\n')
|
||||
if not isinstance(node.parent, nodes.line_block):
|
||||
@ -765,38 +774,44 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_line(self, node):
|
||||
self.escape_newlines += 1
|
||||
|
||||
def depart_line(self, node):
|
||||
self.body.append('@w{ }\n')
|
||||
self.escape_newlines -= 1
|
||||
|
||||
## Inline
|
||||
# -- Inline
|
||||
|
||||
def visit_strong(self, node):
|
||||
self.body.append('@strong{')
|
||||
|
||||
def depart_strong(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
def visit_emphasis(self, node):
|
||||
self.body.append('@emph{')
|
||||
|
||||
def depart_emphasis(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
def visit_literal(self, node):
|
||||
self.body.append('@code{')
|
||||
|
||||
def depart_literal(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
def visit_superscript(self, node):
|
||||
self.body.append('@w{^')
|
||||
|
||||
def depart_superscript(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
def visit_subscript(self, node):
|
||||
self.body.append('@w{[')
|
||||
|
||||
def depart_subscript(self, node):
|
||||
self.body.append(']}')
|
||||
|
||||
## Footnotes
|
||||
# -- Footnotes
|
||||
|
||||
def visit_footnote(self, node):
|
||||
raise nodes.SkipNode
|
||||
@ -804,6 +819,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
def visit_collected_footnote(self, node):
|
||||
self.in_footnote += 1
|
||||
self.body.append('@footnote{')
|
||||
|
||||
def depart_collected_footnote(self, node):
|
||||
self.body.append('}')
|
||||
self.in_footnote -= 1
|
||||
@ -821,19 +837,22 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
def visit_citation(self, node):
|
||||
for id in node.get('ids'):
|
||||
self.add_anchor(id, node)
|
||||
|
||||
def depart_citation(self, node):
|
||||
pass
|
||||
|
||||
def visit_citation_reference(self, node):
|
||||
self.body.append('@w{[')
|
||||
|
||||
def depart_citation_reference(self, node):
|
||||
self.body.append(']}')
|
||||
|
||||
## Lists
|
||||
# -- Lists
|
||||
|
||||
def visit_bullet_list(self, node):
|
||||
bullet = node.get('bullet', '*')
|
||||
self.body.append('\n\n@itemize %s\n' % bullet)
|
||||
|
||||
def depart_bullet_list(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end itemize\n')
|
||||
@ -843,33 +862,38 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
enum = node.get('enumtype', 'arabic')
|
||||
starters = {'arabic': '',
|
||||
'loweralpha': 'a',
|
||||
'upperalpha': 'A',}
|
||||
'upperalpha': 'A'}
|
||||
start = node.get('start', starters.get(enum, ''))
|
||||
self.body.append('\n\n@enumerate %s\n' % start)
|
||||
|
||||
def depart_enumerated_list(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end enumerate\n')
|
||||
|
||||
def visit_list_item(self, node):
|
||||
self.body.append('\n@item ')
|
||||
|
||||
def depart_list_item(self, node):
|
||||
pass
|
||||
|
||||
## Option List
|
||||
# -- Option List
|
||||
|
||||
def visit_option_list(self, node):
|
||||
self.body.append('\n\n@table @option\n')
|
||||
|
||||
def depart_option_list(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end table\n')
|
||||
|
||||
def visit_option_list_item(self, node):
|
||||
pass
|
||||
|
||||
def depart_option_list_item(self, node):
|
||||
pass
|
||||
|
||||
def visit_option_group(self, node):
|
||||
self.at_item_x = '@item'
|
||||
|
||||
def depart_option_group(self, node):
|
||||
pass
|
||||
|
||||
@ -877,34 +901,40 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.escape_hyphens += 1
|
||||
self.body.append('\n%s ' % self.at_item_x)
|
||||
self.at_item_x = '@itemx'
|
||||
|
||||
def depart_option(self, node):
|
||||
self.escape_hyphens -= 1
|
||||
|
||||
def visit_option_string(self, node):
|
||||
pass
|
||||
|
||||
def depart_option_string(self, node):
|
||||
pass
|
||||
|
||||
def visit_option_argument(self, node):
|
||||
self.body.append(node.get('delimiter', ' '))
|
||||
|
||||
def depart_option_argument(self, node):
|
||||
pass
|
||||
|
||||
def visit_description(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def depart_description(self, node):
|
||||
pass
|
||||
|
||||
## Definitions
|
||||
# -- Definitions
|
||||
|
||||
def visit_definition_list(self, node):
|
||||
self.body.append('\n\n@table @asis\n')
|
||||
|
||||
def depart_definition_list(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end table\n')
|
||||
|
||||
def visit_definition_list_item(self, node):
|
||||
self.at_item_x = '@item'
|
||||
|
||||
def depart_definition_list_item(self, node):
|
||||
pass
|
||||
|
||||
@ -918,33 +948,39 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
node.remove(n)
|
||||
self.body.append('\n%s ' % self.at_item_x)
|
||||
self.at_item_x = '@itemx'
|
||||
|
||||
def depart_term(self, node):
|
||||
pass
|
||||
|
||||
def visit_termsep(self, node):
|
||||
self.body.append('\n%s ' % self.at_item_x)
|
||||
|
||||
def depart_termsep(self, node):
|
||||
pass
|
||||
|
||||
def visit_classifier(self, node):
|
||||
self.body.append(' : ')
|
||||
|
||||
def depart_classifier(self, node):
|
||||
pass
|
||||
|
||||
def visit_definition(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def depart_definition(self, node):
|
||||
pass
|
||||
|
||||
## Tables
|
||||
# -- Tables
|
||||
|
||||
def visit_table(self, node):
|
||||
self.entry_sep = '@item'
|
||||
|
||||
def depart_table(self, node):
|
||||
self.body.append('\n@end multitable\n\n')
|
||||
|
||||
def visit_tabular_col_spec(self, node):
|
||||
pass
|
||||
|
||||
def depart_tabular_col_spec(self, node):
|
||||
pass
|
||||
|
||||
@ -954,67 +990,78 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
return
|
||||
self.body.append('\n\n@multitable ')
|
||||
for i, n in enumerate(self.colwidths):
|
||||
self.body.append('{%s} ' %('x' * (n+2)))
|
||||
self.body.append('{%s} ' % ('x' * (n+2)))
|
||||
|
||||
def depart_colspec(self, node):
|
||||
pass
|
||||
|
||||
def visit_tgroup(self, node):
|
||||
self.colwidths = []
|
||||
self.n_cols = node['cols']
|
||||
|
||||
def depart_tgroup(self, node):
|
||||
pass
|
||||
|
||||
def visit_thead(self, node):
|
||||
self.entry_sep = '@headitem'
|
||||
|
||||
def depart_thead(self, node):
|
||||
pass
|
||||
|
||||
def visit_tbody(self, node):
|
||||
pass
|
||||
|
||||
def depart_tbody(self, node):
|
||||
pass
|
||||
|
||||
def visit_row(self, node):
|
||||
pass
|
||||
|
||||
def depart_row(self, node):
|
||||
self.entry_sep = '@item'
|
||||
|
||||
def visit_entry(self, node):
|
||||
self.body.append('\n%s\n' % self.entry_sep)
|
||||
self.entry_sep = '@tab'
|
||||
|
||||
def depart_entry(self, node):
|
||||
for i in range(node.get('morecols', 0)):
|
||||
self.body.append('\n@tab\n')
|
||||
|
||||
## Field Lists
|
||||
# -- Field Lists
|
||||
|
||||
def visit_field_list(self, node):
|
||||
pass
|
||||
|
||||
def depart_field_list(self, node):
|
||||
pass
|
||||
|
||||
def visit_field(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def depart_field(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def visit_field_name(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@*')
|
||||
|
||||
def depart_field_name(self, node):
|
||||
self.body.append(': ')
|
||||
|
||||
def visit_field_body(self, node):
|
||||
pass
|
||||
|
||||
def depart_field_body(self, node):
|
||||
pass
|
||||
|
||||
## Admonitions
|
||||
# -- Admonitions
|
||||
|
||||
def visit_admonition(self, node, name=''):
|
||||
if not name:
|
||||
name = self.escape(node[0].astext())
|
||||
self.body.append(u'\n@cartouche\n@quotation %s ' % name)
|
||||
|
||||
def depart_admonition(self, node):
|
||||
self.ensure_eol()
|
||||
self.body.append('@end quotation\n'
|
||||
@ -1044,7 +1091,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
visit_warning = _make_visit_admonition('warning')
|
||||
depart_warning = depart_admonition
|
||||
|
||||
## Misc
|
||||
# -- Misc
|
||||
|
||||
def visit_docinfo(self, node):
|
||||
raise nodes.SkipNode
|
||||
@ -1061,12 +1108,14 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
def visit_container(self, node):
|
||||
if node.get('literal_block'):
|
||||
self.body.append('\n\n@float LiteralBlock\n')
|
||||
|
||||
def depart_container(self, node):
|
||||
if node.get('literal_block'):
|
||||
self.body.append('\n@end float\n\n')
|
||||
|
||||
def visit_decoration(self, node):
|
||||
pass
|
||||
|
||||
def depart_decoration(self, node):
|
||||
pass
|
||||
|
||||
@ -1077,16 +1126,19 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
title = node[0]
|
||||
self.visit_rubric(title)
|
||||
self.body.append('%s\n' % self.escape(title.astext()))
|
||||
|
||||
def depart_topic(self, node):
|
||||
pass
|
||||
|
||||
def visit_transition(self, node):
|
||||
self.body.append('\n\n%s\n\n' % ('_' * 66))
|
||||
|
||||
def depart_transition(self, node):
|
||||
pass
|
||||
|
||||
def visit_attribution(self, node):
|
||||
self.body.append('\n\n@center --- ')
|
||||
|
||||
def depart_attribution(self, node):
|
||||
self.body.append('\n\n')
|
||||
|
||||
@ -1098,6 +1150,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_figure(self, node):
|
||||
self.body.append('\n\n@float Figure\n')
|
||||
|
||||
def depart_figure(self, node):
|
||||
self.body.append('\n@end float\n\n')
|
||||
|
||||
@ -1109,6 +1162,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
else:
|
||||
self.builder.warn('caption not inside a figure.',
|
||||
(self.curfilestack[-1], node.line))
|
||||
|
||||
def depart_caption(self, node):
|
||||
if (isinstance(node.parent, nodes.figure) or
|
||||
(isinstance(node.parent, nodes.container) and
|
||||
@ -1134,31 +1188,37 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
alt = self.escape_arg(attrs.get('alt', ''))
|
||||
self.body.append('\n@image{%s,%s,%s,%s,%s}\n' %
|
||||
(name, width, height, alt, ext[1:]))
|
||||
|
||||
def depart_image(self, node):
|
||||
pass
|
||||
|
||||
def visit_compound(self, node):
|
||||
pass
|
||||
|
||||
def depart_compound(self, node):
|
||||
pass
|
||||
|
||||
def visit_sidebar(self, node):
|
||||
self.visit_topic(node)
|
||||
|
||||
def depart_sidebar(self, node):
|
||||
self.depart_topic(node)
|
||||
|
||||
def visit_label(self, node):
|
||||
self.body.append('@w{(')
|
||||
|
||||
def depart_label(self, node):
|
||||
self.body.append(')} ')
|
||||
|
||||
def visit_legend(self, node):
|
||||
pass
|
||||
|
||||
def depart_legend(self, node):
|
||||
pass
|
||||
|
||||
def visit_substitution_reference(self, node):
|
||||
pass
|
||||
|
||||
def depart_substitution_reference(self, node):
|
||||
pass
|
||||
|
||||
@ -1179,6 +1239,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_problematic(self, node):
|
||||
self.body.append('>>')
|
||||
|
||||
def depart_problematic(self, node):
|
||||
self.body.append('<<')
|
||||
|
||||
@ -1189,10 +1250,11 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
def unknown_visit(self, node):
|
||||
self.builder.warn("unknown node type: %r" % node,
|
||||
(self.curfilestack[-1], node.line))
|
||||
|
||||
def unknown_departure(self, node):
|
||||
pass
|
||||
|
||||
### Sphinx specific
|
||||
# -- Sphinx specific
|
||||
|
||||
def visit_productionlist(self, node):
|
||||
self.visit_literal_block(None)
|
||||
@ -1214,16 +1276,19 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_production(self, node):
|
||||
pass
|
||||
|
||||
def depart_production(self, node):
|
||||
pass
|
||||
|
||||
def visit_literal_emphasis(self, node):
|
||||
self.body.append('@code{')
|
||||
|
||||
def depart_literal_emphasis(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
def visit_literal_strong(self, node):
|
||||
self.body.append('@code{')
|
||||
|
||||
def depart_literal_strong(self, node):
|
||||
self.body.append('}')
|
||||
|
||||
@ -1240,6 +1305,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_versionmodified(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
def depart_versionmodified(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
@ -1248,6 +1314,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.next_section_ids.add(':doc')
|
||||
self.curfilestack.append(node['docname'])
|
||||
self.footnotestack.append(self.collect_footnotes(node))
|
||||
|
||||
def depart_start_of_file(self, node):
|
||||
self.curfilestack.pop()
|
||||
self.footnotestack.pop()
|
||||
@ -1260,6 +1327,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
def visit_seealso(self, node):
|
||||
self.body.append(u'\n\n@subsubheading %s\n\n' %
|
||||
admonitionlabels['seealso'])
|
||||
|
||||
def depart_seealso(self, node):
|
||||
self.body.append('\n')
|
||||
|
||||
@ -1268,26 +1336,29 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_glossary(self, node):
|
||||
pass
|
||||
|
||||
def depart_glossary(self, node):
|
||||
pass
|
||||
|
||||
def visit_acks(self, node):
|
||||
self.body.append('\n\n')
|
||||
self.body.append(', '.join(n.astext()
|
||||
for n in node.children[0].children) + '.')
|
||||
for n in node.children[0].children) + '.')
|
||||
self.body.append('\n\n')
|
||||
raise nodes.SkipNode
|
||||
|
||||
def visit_highlightlang(self, node):
|
||||
pass
|
||||
|
||||
def depart_highlightlang(self, node):
|
||||
pass
|
||||
|
||||
## Desc
|
||||
# -- Desc
|
||||
|
||||
def visit_desc(self, node):
|
||||
self.desc = node
|
||||
self.at_deffnx = '@deffn'
|
||||
|
||||
def depart_desc(self, node):
|
||||
self.desc = None
|
||||
self.ensure_eol()
|
||||
@ -1312,6 +1383,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.body.append('\n%s {%s} ' % (self.at_deffnx, category))
|
||||
self.at_deffnx = '@deffnx'
|
||||
self.desc_type_name = name
|
||||
|
||||
def depart_desc_signature(self, node):
|
||||
self.body.append("\n")
|
||||
self.escape_hyphens -= 1
|
||||
@ -1319,27 +1391,32 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_returns(self, node):
|
||||
self.body.append(' -> ')
|
||||
|
||||
def depart_desc_returns(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_parameterlist(self, node):
|
||||
self.body.append(' (')
|
||||
self.first_param = 1
|
||||
|
||||
def depart_desc_parameterlist(self, node):
|
||||
self.body.append(')')
|
||||
|
||||
@ -1356,6 +1433,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_desc_optional(self, node):
|
||||
self.body.append('[')
|
||||
|
||||
def depart_desc_optional(self, node):
|
||||
self.body.append(']')
|
||||
|
||||
@ -1370,16 +1448,19 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
txt == self.desc['objtype'] or \
|
||||
txt in self.desc_type_name.split():
|
||||
raise nodes.SkipNode
|
||||
|
||||
def depart_desc_annotation(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_content(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_content(self, node):
|
||||
pass
|
||||
|
||||
def visit_inline(self, node):
|
||||
pass
|
||||
|
||||
def depart_inline(self, node):
|
||||
pass
|
||||
|
||||
@ -1391,26 +1472,31 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
self.handled_abbrs.add(abbr)
|
||||
else:
|
||||
self.context.append('}')
|
||||
|
||||
def depart_abbreviation(self, node):
|
||||
self.body.append(self.context.pop())
|
||||
|
||||
def visit_download_reference(self, node):
|
||||
pass
|
||||
|
||||
def depart_download_reference(self, node):
|
||||
pass
|
||||
|
||||
def visit_hlist(self, node):
|
||||
self.visit_bullet_list(node)
|
||||
|
||||
def depart_hlist(self, node):
|
||||
self.depart_bullet_list(node)
|
||||
|
||||
def visit_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def depart_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def visit_pending_xref(self, node):
|
||||
pass
|
||||
|
||||
def depart_pending_xref(self, node):
|
||||
pass
|
||||
|
||||
|
@ -37,7 +37,7 @@ class TextWrapper(textwrap.TextWrapper):
|
||||
The original _wrap_chunks uses len() to calculate width.
|
||||
This method respects wide/fullwidth characters for width adjustment.
|
||||
"""
|
||||
drop_whitespace = getattr(self, 'drop_whitespace', True) #py25 compat
|
||||
drop_whitespace = getattr(self, 'drop_whitespace', True) # py25 compat
|
||||
lines = []
|
||||
if self.width <= 0:
|
||||
raise ValueError("invalid width %r (must be > 0)" % self.width)
|
||||
@ -85,7 +85,7 @@ class TextWrapper(textwrap.TextWrapper):
|
||||
Break line by unicode width instead of len(word).
|
||||
"""
|
||||
total = 0
|
||||
for i,c in enumerate(word):
|
||||
for i, c in enumerate(word):
|
||||
total += column_width(c)
|
||||
if total > space_left:
|
||||
return word[:i-1], word[i-1:]
|
||||
@ -97,7 +97,8 @@ class TextWrapper(textwrap.TextWrapper):
|
||||
Override original method that only split by 'wordsep_re'.
|
||||
This '_split' split wide-characters into chunk by one character.
|
||||
"""
|
||||
split = lambda t: textwrap.TextWrapper._split(self, t)
|
||||
def split(t):
|
||||
return textwrap.TextWrapper._split(self, t)
|
||||
chunks = []
|
||||
for chunk in split(text):
|
||||
for w, g in groupby(chunk, column_width):
|
||||
@ -127,6 +128,7 @@ class TextWrapper(textwrap.TextWrapper):
|
||||
MAXWIDTH = 70
|
||||
STDINDENT = 3
|
||||
|
||||
|
||||
def my_wrap(text, width=MAXWIDTH, **kwargs):
|
||||
w = TextWrapper(width=width, **kwargs)
|
||||
return w.wrap(text)
|
||||
@ -174,15 +176,18 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def add_text(self, text):
|
||||
self.states[-1].append((-1, text))
|
||||
|
||||
def new_state(self, indent=STDINDENT):
|
||||
self.states.append([])
|
||||
self.stateindent.append(indent)
|
||||
|
||||
def end_state(self, wrap=True, end=[''], first=None):
|
||||
content = self.states.pop()
|
||||
maxindent = sum(self.stateindent)
|
||||
indent = self.stateindent.pop()
|
||||
result = []
|
||||
toformat = []
|
||||
|
||||
def do_format():
|
||||
if not toformat:
|
||||
return
|
||||
@ -206,7 +211,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
result_rest, result = result[1:], []
|
||||
if item:
|
||||
toformat = [first + ' '.join(item)]
|
||||
do_format() #re-create `result` from `toformat`
|
||||
do_format() # re-create `result` from `toformat`
|
||||
_dummy, new_item = result[0]
|
||||
result.insert(0, (itemindent - indent, [new_item[0]]))
|
||||
result[1] = (itemindent, new_item[1:])
|
||||
@ -215,6 +220,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_document(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_document(self, node):
|
||||
self.end_state()
|
||||
self.body = self.nl.join(line and (' '*indent + line)
|
||||
@ -228,11 +234,13 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
def visit_section(self, node):
|
||||
self._title_char = self.sectionchars[self.sectionlevel]
|
||||
self.sectionlevel += 1
|
||||
|
||||
def depart_section(self, node):
|
||||
self.sectionlevel -= 1
|
||||
|
||||
def visit_topic(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_topic(self, node):
|
||||
self.end_state()
|
||||
|
||||
@ -242,17 +250,20 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
def visit_rubric(self, node):
|
||||
self.new_state(0)
|
||||
self.add_text('-[ ')
|
||||
|
||||
def depart_rubric(self, node):
|
||||
self.add_text(' ]-')
|
||||
self.end_state()
|
||||
|
||||
def visit_compound(self, node):
|
||||
pass
|
||||
|
||||
def depart_compound(self, node):
|
||||
pass
|
||||
|
||||
def visit_glossary(self, node):
|
||||
pass
|
||||
|
||||
def depart_glossary(self, node):
|
||||
pass
|
||||
|
||||
@ -261,6 +272,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
self.add_text(node.astext()+': ')
|
||||
raise nodes.SkipNode
|
||||
self.new_state(0)
|
||||
|
||||
def depart_title(self, node):
|
||||
if isinstance(node.parent, nodes.section):
|
||||
char = self._title_char
|
||||
@ -269,20 +281,23 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
text = ''.join(x[1] for x in self.states.pop() if x[0] == -1)
|
||||
self.stateindent.pop()
|
||||
self.states[-1].append(
|
||||
(0, ['', text, '%s' % (char * column_width(text)), '']))
|
||||
(0, ['', text, '%s' % (char * column_width(text)), '']))
|
||||
|
||||
def visit_subtitle(self, node):
|
||||
pass
|
||||
|
||||
def depart_subtitle(self, node):
|
||||
pass
|
||||
|
||||
def visit_attribution(self, node):
|
||||
self.add_text('-- ')
|
||||
|
||||
def depart_attribution(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc(self, node):
|
||||
pass
|
||||
|
||||
@ -290,33 +305,39 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
self.new_state(0)
|
||||
if node.parent['objtype'] in ('class', 'exception'):
|
||||
self.add_text('%s ' % node.parent['objtype'])
|
||||
|
||||
def depart_desc_signature(self, node):
|
||||
# XXX: wrap signatures in a way that makes sense
|
||||
self.end_state(wrap=False, end=None)
|
||||
|
||||
def visit_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_name(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_addname(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_type(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_returns(self, node):
|
||||
self.add_text(' -> ')
|
||||
|
||||
def depart_desc_returns(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_parameterlist(self, node):
|
||||
self.add_text('(')
|
||||
self.first_param = 1
|
||||
|
||||
def depart_desc_parameterlist(self, node):
|
||||
self.add_text(')')
|
||||
|
||||
@ -330,27 +351,32 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_desc_optional(self, node):
|
||||
self.add_text('[')
|
||||
|
||||
def depart_desc_optional(self, node):
|
||||
self.add_text(']')
|
||||
|
||||
def visit_desc_annotation(self, node):
|
||||
pass
|
||||
|
||||
def depart_desc_annotation(self, node):
|
||||
pass
|
||||
|
||||
def visit_desc_content(self, node):
|
||||
self.new_state()
|
||||
self.add_text(self.nl)
|
||||
|
||||
def depart_desc_content(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_figure(self, node):
|
||||
self.new_state()
|
||||
|
||||
def depart_figure(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_caption(self, node):
|
||||
pass
|
||||
|
||||
def depart_caption(self, node):
|
||||
pass
|
||||
|
||||
@ -374,6 +400,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
def visit_footnote(self, node):
|
||||
self._footnote = node.children[0].astext().strip()
|
||||
self.new_state(len(self._footnote) + 3)
|
||||
|
||||
def depart_footnote(self, node):
|
||||
self.end_state(first='[%s] ' % self._footnote)
|
||||
|
||||
@ -383,6 +410,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
else:
|
||||
self._citlabel = ''
|
||||
self.new_state(len(self._citlabel) + 3)
|
||||
|
||||
def depart_citation(self, node):
|
||||
self.end_state(first='[%s] ' % self._citlabel)
|
||||
|
||||
@ -391,6 +419,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_legend(self, node):
|
||||
pass
|
||||
|
||||
def depart_legend(self, node):
|
||||
pass
|
||||
|
||||
@ -398,16 +427,19 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_option_list(self, node):
|
||||
pass
|
||||
|
||||
def depart_option_list(self, node):
|
||||
pass
|
||||
|
||||
def visit_option_list_item(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_option_list_item(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_option_group(self, node):
|
||||
self._firstoption = True
|
||||
|
||||
def depart_option_group(self, node):
|
||||
self.add_text(' ')
|
||||
|
||||
@ -416,21 +448,25 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
self._firstoption = False
|
||||
else:
|
||||
self.add_text(', ')
|
||||
|
||||
def depart_option(self, node):
|
||||
pass
|
||||
|
||||
def visit_option_string(self, node):
|
||||
pass
|
||||
|
||||
def depart_option_string(self, node):
|
||||
pass
|
||||
|
||||
def visit_option_argument(self, node):
|
||||
self.add_text(node['delimiter'])
|
||||
|
||||
def depart_option_argument(self, node):
|
||||
pass
|
||||
|
||||
def visit_description(self, node):
|
||||
pass
|
||||
|
||||
def depart_description(self, node):
|
||||
pass
|
||||
|
||||
@ -443,21 +479,25 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_tgroup(self, node):
|
||||
pass
|
||||
|
||||
def depart_tgroup(self, node):
|
||||
pass
|
||||
|
||||
def visit_thead(self, node):
|
||||
pass
|
||||
|
||||
def depart_thead(self, node):
|
||||
pass
|
||||
|
||||
def visit_tbody(self, node):
|
||||
self.table.append('sep')
|
||||
|
||||
def depart_tbody(self, node):
|
||||
pass
|
||||
|
||||
def visit_row(self, node):
|
||||
self.table.append([])
|
||||
|
||||
def depart_row(self, node):
|
||||
pass
|
||||
|
||||
@ -466,6 +506,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
raise NotImplementedError('Column or row spanning cells are '
|
||||
'not implemented.')
|
||||
self.new_state(0)
|
||||
|
||||
def depart_entry(self, node):
|
||||
text = self.nl.join(self.nl.join(x[1]) for x in self.states.pop())
|
||||
self.stateindent.pop()
|
||||
@ -476,6 +517,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
raise NotImplementedError('Nested tables are not supported.')
|
||||
self.new_state(0)
|
||||
self.table = [[]]
|
||||
|
||||
def depart_table(self, node):
|
||||
lines = self.table[1:]
|
||||
fmted_rows = []
|
||||
@ -531,8 +573,8 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_acks(self, node):
|
||||
self.new_state(0)
|
||||
self.add_text(', '.join(n.astext() for n in node.children[0].children)
|
||||
+ '.')
|
||||
self.add_text(', '.join(n.astext() for n in node.children[0].children) +
|
||||
'.')
|
||||
self.end_state()
|
||||
raise nodes.SkipNode
|
||||
|
||||
@ -551,16 +593,19 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_bullet_list(self, node):
|
||||
self.list_counter.append(-1)
|
||||
|
||||
def depart_bullet_list(self, node):
|
||||
self.list_counter.pop()
|
||||
|
||||
def visit_enumerated_list(self, node):
|
||||
self.list_counter.append(node.get('start', 1) - 1)
|
||||
|
||||
def depart_enumerated_list(self, node):
|
||||
self.list_counter.pop()
|
||||
|
||||
def visit_definition_list(self, node):
|
||||
self.list_counter.append(-2)
|
||||
|
||||
def depart_definition_list(self, node):
|
||||
self.list_counter.pop()
|
||||
|
||||
@ -575,6 +620,7 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
# enumerated list
|
||||
self.list_counter[-1] += 1
|
||||
self.new_state(len(str(self.list_counter[-1])) + 2)
|
||||
|
||||
def depart_list_item(self, node):
|
||||
if self.list_counter[-1] == -1:
|
||||
self.end_state(first='* ')
|
||||
@ -585,12 +631,14 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_definition_list_item(self, node):
|
||||
self._li_has_classifier = len(node) >= 2 and \
|
||||
isinstance(node[1], nodes.classifier)
|
||||
isinstance(node[1], nodes.classifier)
|
||||
|
||||
def depart_definition_list_item(self, node):
|
||||
pass
|
||||
|
||||
def visit_term(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_term(self, node):
|
||||
if not self._li_has_classifier:
|
||||
self.end_state(end=None)
|
||||
@ -601,57 +649,68 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_classifier(self, node):
|
||||
self.add_text(' : ')
|
||||
|
||||
def depart_classifier(self, node):
|
||||
self.end_state(end=None)
|
||||
|
||||
def visit_definition(self, node):
|
||||
self.new_state()
|
||||
|
||||
def depart_definition(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_field_list(self, node):
|
||||
pass
|
||||
|
||||
def depart_field_list(self, node):
|
||||
pass
|
||||
|
||||
def visit_field(self, node):
|
||||
pass
|
||||
|
||||
def depart_field(self, node):
|
||||
pass
|
||||
|
||||
def visit_field_name(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_field_name(self, node):
|
||||
self.add_text(':')
|
||||
self.end_state(end=None)
|
||||
|
||||
def visit_field_body(self, node):
|
||||
self.new_state()
|
||||
|
||||
def depart_field_body(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_centered(self, node):
|
||||
pass
|
||||
|
||||
def depart_centered(self, node):
|
||||
pass
|
||||
|
||||
def visit_hlist(self, node):
|
||||
pass
|
||||
|
||||
def depart_hlist(self, node):
|
||||
pass
|
||||
|
||||
def visit_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def depart_hlistcol(self, node):
|
||||
pass
|
||||
|
||||
def visit_admonition(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_admonition(self, node):
|
||||
self.end_state()
|
||||
|
||||
def _visit_admonition(self, node):
|
||||
self.new_state(2)
|
||||
|
||||
def _make_depart_admonition(name):
|
||||
def depart_admonition(self, node):
|
||||
self.end_state(first=admonitionlabels[name] + ': ')
|
||||
@ -680,22 +739,26 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_versionmodified(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_versionmodified(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_literal_block(self, node):
|
||||
self.new_state()
|
||||
|
||||
def depart_literal_block(self, node):
|
||||
self.end_state(wrap=False)
|
||||
|
||||
def visit_doctest_block(self, node):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_doctest_block(self, node):
|
||||
self.end_state(wrap=False)
|
||||
|
||||
def visit_line_block(self, node):
|
||||
self.new_state()
|
||||
self.lineblocklevel += 1
|
||||
|
||||
def depart_line_block(self, node):
|
||||
self.lineblocklevel -= 1
|
||||
self.end_state(wrap=False, end=None)
|
||||
@ -704,26 +767,30 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_line(self, node):
|
||||
pass
|
||||
|
||||
def depart_line(self, node):
|
||||
self.add_text('\n')
|
||||
|
||||
def visit_block_quote(self, node):
|
||||
self.new_state()
|
||||
|
||||
def depart_block_quote(self, node):
|
||||
self.end_state()
|
||||
|
||||
def visit_compact_paragraph(self, node):
|
||||
pass
|
||||
|
||||
def depart_compact_paragraph(self, node):
|
||||
pass
|
||||
|
||||
def visit_paragraph(self, node):
|
||||
if not isinstance(node.parent, nodes.Admonition) or \
|
||||
isinstance(node.parent, addnodes.seealso):
|
||||
isinstance(node.parent, addnodes.seealso):
|
||||
self.new_state(0)
|
||||
|
||||
def depart_paragraph(self, node):
|
||||
if not isinstance(node.parent, nodes.Admonition) or \
|
||||
isinstance(node.parent, addnodes.seealso):
|
||||
isinstance(node.parent, addnodes.seealso):
|
||||
self.end_state()
|
||||
|
||||
def visit_target(self, node):
|
||||
@ -740,11 +807,13 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_pending_xref(self, node):
|
||||
pass
|
||||
|
||||
def depart_pending_xref(self, node):
|
||||
pass
|
||||
|
||||
def visit_reference(self, node):
|
||||
pass
|
||||
|
||||
def depart_reference(self, node):
|
||||
pass
|
||||
|
||||
@ -755,52 +824,62 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_download_reference(self, node):
|
||||
pass
|
||||
|
||||
def depart_download_reference(self, node):
|
||||
pass
|
||||
|
||||
def visit_emphasis(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def depart_emphasis(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def visit_literal_emphasis(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def depart_literal_emphasis(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def visit_strong(self, node):
|
||||
self.add_text('**')
|
||||
|
||||
def depart_strong(self, node):
|
||||
self.add_text('**')
|
||||
|
||||
def visit_literal_strong(self, node):
|
||||
self.add_text('**')
|
||||
|
||||
def depart_literal_strong(self, node):
|
||||
self.add_text('**')
|
||||
|
||||
def visit_abbreviation(self, node):
|
||||
self.add_text('')
|
||||
|
||||
def depart_abbreviation(self, node):
|
||||
if node.hasattr('explanation'):
|
||||
self.add_text(' (%s)' % node['explanation'])
|
||||
|
||||
def visit_title_reference(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def depart_title_reference(self, node):
|
||||
self.add_text('*')
|
||||
|
||||
def visit_literal(self, node):
|
||||
self.add_text('"')
|
||||
|
||||
def depart_literal(self, node):
|
||||
self.add_text('"')
|
||||
|
||||
def visit_subscript(self, node):
|
||||
self.add_text('_')
|
||||
|
||||
def depart_subscript(self, node):
|
||||
pass
|
||||
|
||||
def visit_superscript(self, node):
|
||||
self.add_text('^')
|
||||
|
||||
def depart_superscript(self, node):
|
||||
pass
|
||||
|
||||
@ -814,28 +893,33 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def visit_Text(self, node):
|
||||
self.add_text(node.astext())
|
||||
|
||||
def depart_Text(self, node):
|
||||
pass
|
||||
|
||||
def visit_generated(self, node):
|
||||
pass
|
||||
|
||||
def depart_generated(self, node):
|
||||
pass
|
||||
|
||||
def visit_inline(self, node):
|
||||
if 'xref' in node['classes'] or 'term' in node['classes']:
|
||||
self.add_text('*')
|
||||
|
||||
def depart_inline(self, node):
|
||||
if 'xref' in node['classes'] or 'term' in node['classes']:
|
||||
self.add_text('*')
|
||||
|
||||
def visit_container(self, node):
|
||||
pass
|
||||
|
||||
def depart_container(self, node):
|
||||
pass
|
||||
|
||||
def visit_problematic(self, node):
|
||||
self.add_text('>>')
|
||||
|
||||
def depart_problematic(self, node):
|
||||
self.add_text('<<')
|
||||
|
||||
|
@ -23,8 +23,8 @@ class XMLWriter(BaseXMLWriter):
|
||||
|
||||
def translate(self, *args, **kwargs):
|
||||
self.document.settings.newlines = \
|
||||
self.document.settings.indents = \
|
||||
self.builder.env.config.xml_pretty
|
||||
self.document.settings.indents = \
|
||||
self.builder.env.config.xml_pretty
|
||||
self.document.settings.xml_declaration = True
|
||||
self.document.settings.doctype_declaration = True
|
||||
return BaseXMLWriter.translate(self)
|
||||
|
Loading…
Reference in New Issue
Block a user