mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Migrate to py3 style type annotation: sphinx.writers.html
This commit is contained in:
parent
5466906c7b
commit
ab1369a837
@ -13,9 +13,11 @@ import os
|
|||||||
import posixpath
|
import posixpath
|
||||||
import sys
|
import sys
|
||||||
import warnings
|
import warnings
|
||||||
from typing import Iterable, cast
|
from typing import cast
|
||||||
|
from typing import Iterable
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
|
from docutils.nodes import Element, Node, Text
|
||||||
from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator
|
from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator
|
||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
@ -28,8 +30,7 @@ from sphinx.util.images import get_image_size
|
|||||||
|
|
||||||
if False:
|
if False:
|
||||||
# For type annotation
|
# For type annotation
|
||||||
from typing import Any # NOQA
|
from sphinx.builders.html import StandaloneHTMLBuilder
|
||||||
from sphinx.builders.html import StandaloneHTMLBuilder # NOQA
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -46,13 +47,11 @@ class HTMLWriter(Writer):
|
|||||||
if '--embed-stylesheet' in _setting[1]:
|
if '--embed-stylesheet' in _setting[1]:
|
||||||
_setting[2]['default'] = 0
|
_setting[2]['default'] = 0
|
||||||
|
|
||||||
def __init__(self, builder):
|
def __init__(self, builder: "StandaloneHTMLBuilder") -> None:
|
||||||
# type: (StandaloneHTMLBuilder) -> None
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.builder = builder
|
self.builder = builder
|
||||||
|
|
||||||
def translate(self):
|
def translate(self) -> None:
|
||||||
# type: () -> None
|
|
||||||
# sadly, this is mostly copied from parent class
|
# sadly, this is mostly copied from parent class
|
||||||
visitor = self.builder.create_translator(self.document, self.builder)
|
visitor = self.builder.create_translator(self.document, self.builder)
|
||||||
self.visitor = cast(HTMLTranslator, visitor)
|
self.visitor = cast(HTMLTranslator, visitor)
|
||||||
@ -74,8 +73,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
|
|
||||||
builder = None # type: StandaloneHTMLBuilder
|
builder = None # type: StandaloneHTMLBuilder
|
||||||
|
|
||||||
def __init__(self, *args):
|
def __init__(self, *args) -> None:
|
||||||
# type: (Any) -> None
|
|
||||||
if isinstance(args[0], nodes.document) and isinstance(args[1], Builder):
|
if isinstance(args[0], nodes.document) and isinstance(args[1], Builder):
|
||||||
document, builder = args
|
document, builder = args
|
||||||
else:
|
else:
|
||||||
@ -101,26 +99,21 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_index = 0
|
||||||
self.required_params_left = 0
|
self.required_params_left = 0
|
||||||
|
|
||||||
def visit_start_of_file(self, node):
|
def visit_start_of_file(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
# only occurs in the single-file builder
|
# only occurs in the single-file builder
|
||||||
self.docnames.append(node['docname'])
|
self.docnames.append(node['docname'])
|
||||||
self.body.append('<span id="document-%s"></span>' % node['docname'])
|
self.body.append('<span id="document-%s"></span>' % node['docname'])
|
||||||
|
|
||||||
def depart_start_of_file(self, node):
|
def depart_start_of_file(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.docnames.pop()
|
self.docnames.pop()
|
||||||
|
|
||||||
def visit_desc(self, node):
|
def visit_desc(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'dl', CLASS=node['objtype']))
|
self.body.append(self.starttag(node, 'dl', CLASS=node['objtype']))
|
||||||
|
|
||||||
def depart_desc(self, node):
|
def depart_desc(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</dl>\n\n')
|
self.body.append('</dl>\n\n')
|
||||||
|
|
||||||
def visit_desc_signature(self, node):
|
def visit_desc_signature(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
# the id is set automatically
|
# the id is set automatically
|
||||||
self.body.append(self.starttag(node, 'dt'))
|
self.body.append(self.starttag(node, 'dt'))
|
||||||
# anchor for per-desc interactive data
|
# anchor for per-desc interactive data
|
||||||
@ -128,57 +121,45 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
and node['ids'] and node['first']:
|
and node['ids'] and node['first']:
|
||||||
self.body.append('<!--[%s]-->' % node['ids'][0])
|
self.body.append('<!--[%s]-->' % node['ids'][0])
|
||||||
|
|
||||||
def depart_desc_signature(self, node):
|
def depart_desc_signature(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if not node.get('is_multiline'):
|
if not node.get('is_multiline'):
|
||||||
self.add_permalink_ref(node, _('Permalink to this definition'))
|
self.add_permalink_ref(node, _('Permalink to this definition'))
|
||||||
self.body.append('</dt>\n')
|
self.body.append('</dt>\n')
|
||||||
|
|
||||||
def visit_desc_signature_line(self, node):
|
def visit_desc_signature_line(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_desc_signature_line(self, node):
|
def depart_desc_signature_line(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if node.get('add_permalink'):
|
if node.get('add_permalink'):
|
||||||
# the permalink info is on the parent desc_signature node
|
# the permalink info is on the parent desc_signature node
|
||||||
self.add_permalink_ref(node.parent, _('Permalink to this definition'))
|
self.add_permalink_ref(node.parent, _('Permalink to this definition'))
|
||||||
self.body.append('<br />')
|
self.body.append('<br />')
|
||||||
|
|
||||||
def visit_desc_addname(self, node):
|
def visit_desc_addname(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'code', '', CLASS='descclassname'))
|
self.body.append(self.starttag(node, 'code', '', CLASS='descclassname'))
|
||||||
|
|
||||||
def depart_desc_addname(self, node):
|
def depart_desc_addname(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</code>')
|
self.body.append('</code>')
|
||||||
|
|
||||||
def visit_desc_type(self, node):
|
def visit_desc_type(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_desc_type(self, node):
|
def depart_desc_type(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_desc_returns(self, node):
|
def visit_desc_returns(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(' → ')
|
self.body.append(' → ')
|
||||||
|
|
||||||
def depart_desc_returns(self, node):
|
def depart_desc_returns(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_desc_name(self, node):
|
def visit_desc_name(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'code', '', CLASS='descname'))
|
self.body.append(self.starttag(node, 'code', '', CLASS='descname'))
|
||||||
|
|
||||||
def depart_desc_name(self, node):
|
def depart_desc_name(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</code>')
|
self.body.append('</code>')
|
||||||
|
|
||||||
def visit_desc_parameterlist(self, node):
|
def visit_desc_parameterlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('<span class="sig-paren">(</span>')
|
self.body.append('<span class="sig-paren">(</span>')
|
||||||
self.first_param = 1
|
self.first_param = 1
|
||||||
self.optional_param_level = 0
|
self.optional_param_level = 0
|
||||||
@ -187,8 +168,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
for c in node.children])
|
for c in node.children])
|
||||||
self.param_separator = node.child_text_separator
|
self.param_separator = node.child_text_separator
|
||||||
|
|
||||||
def depart_desc_parameterlist(self, node):
|
def depart_desc_parameterlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('<span class="sig-paren">)</span>')
|
self.body.append('<span class="sig-paren">)</span>')
|
||||||
|
|
||||||
# If required parameters are still to come, then put the comma after
|
# If required parameters are still to come, then put the comma after
|
||||||
@ -197,8 +177,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
#
|
#
|
||||||
# foo([a, ]b, c[, d])
|
# foo([a, ]b, c[, d])
|
||||||
#
|
#
|
||||||
def visit_desc_parameter(self, node):
|
def visit_desc_parameter(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if self.first_param:
|
if self.first_param:
|
||||||
self.first_param = 0
|
self.first_param = 0
|
||||||
elif not self.required_params_left:
|
elif not self.required_params_left:
|
||||||
@ -208,50 +187,40 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
if not node.hasattr('noemph'):
|
if not node.hasattr('noemph'):
|
||||||
self.body.append('<em>')
|
self.body.append('<em>')
|
||||||
|
|
||||||
def depart_desc_parameter(self, node):
|
def depart_desc_parameter(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if not node.hasattr('noemph'):
|
if not node.hasattr('noemph'):
|
||||||
self.body.append('</em>')
|
self.body.append('</em>')
|
||||||
if self.required_params_left:
|
if self.required_params_left:
|
||||||
self.body.append(self.param_separator)
|
self.body.append(self.param_separator)
|
||||||
|
|
||||||
def visit_desc_optional(self, node):
|
def visit_desc_optional(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.optional_param_level += 1
|
self.optional_param_level += 1
|
||||||
self.body.append('<span class="optional">[</span>')
|
self.body.append('<span class="optional">[</span>')
|
||||||
|
|
||||||
def depart_desc_optional(self, node):
|
def depart_desc_optional(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.optional_param_level -= 1
|
self.optional_param_level -= 1
|
||||||
self.body.append('<span class="optional">]</span>')
|
self.body.append('<span class="optional">]</span>')
|
||||||
|
|
||||||
def visit_desc_annotation(self, node):
|
def visit_desc_annotation(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'em', '', CLASS='property'))
|
self.body.append(self.starttag(node, 'em', '', CLASS='property'))
|
||||||
|
|
||||||
def depart_desc_annotation(self, node):
|
def depart_desc_annotation(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</em>')
|
self.body.append('</em>')
|
||||||
|
|
||||||
def visit_desc_content(self, node):
|
def visit_desc_content(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'dd', ''))
|
self.body.append(self.starttag(node, 'dd', ''))
|
||||||
|
|
||||||
def depart_desc_content(self, node):
|
def depart_desc_content(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</dd>')
|
self.body.append('</dd>')
|
||||||
|
|
||||||
def visit_versionmodified(self, node):
|
def visit_versionmodified(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'div', CLASS=node['type']))
|
self.body.append(self.starttag(node, 'div', CLASS=node['type']))
|
||||||
|
|
||||||
def depart_versionmodified(self, node):
|
def depart_versionmodified(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</div>\n')
|
self.body.append('</div>\n')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_reference(self, node):
|
def visit_reference(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
atts = {'class': 'reference'}
|
atts = {'class': 'reference'}
|
||||||
if node.get('internal') or 'refuri' not in node:
|
if node.get('internal') or 'refuri' not in node:
|
||||||
atts['class'] += ' internal'
|
atts['class'] += ' internal'
|
||||||
@ -279,38 +248,31 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append(('%s' + self.secnumber_suffix) %
|
self.body.append(('%s' + self.secnumber_suffix) %
|
||||||
'.'.join(map(str, node['secnumber'])))
|
'.'.join(map(str, node['secnumber'])))
|
||||||
|
|
||||||
def visit_number_reference(self, node):
|
def visit_number_reference(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_reference(node)
|
self.visit_reference(node)
|
||||||
|
|
||||||
def depart_number_reference(self, node):
|
def depart_number_reference(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_reference(node)
|
self.depart_reference(node)
|
||||||
|
|
||||||
# overwritten -- we don't want source comments to show up in the HTML
|
# overwritten -- we don't want source comments to show up in the HTML
|
||||||
def visit_comment(self, node): # type: ignore
|
def visit_comment(self, node: Element) -> None: # type: ignore
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_admonition(self, node, name=''):
|
def visit_admonition(self, node: Element, name: str = '') -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
self.body.append(self.starttag(
|
self.body.append(self.starttag(
|
||||||
node, 'div', CLASS=('admonition ' + name)))
|
node, 'div', CLASS=('admonition ' + name)))
|
||||||
if name:
|
if name:
|
||||||
node.insert(0, nodes.title(name, admonitionlabels[name]))
|
node.insert(0, nodes.title(name, admonitionlabels[name]))
|
||||||
self.set_first_last(node)
|
self.set_first_last(node)
|
||||||
|
|
||||||
def visit_seealso(self, node):
|
def visit_seealso(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'seealso')
|
self.visit_admonition(node, 'seealso')
|
||||||
|
|
||||||
def depart_seealso(self, node):
|
def depart_seealso(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def add_secnumber(self, node):
|
def add_secnumber(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if node.get('secnumber'):
|
if node.get('secnumber'):
|
||||||
self.body.append('.'.join(map(str, node['secnumber'])) +
|
self.body.append('.'.join(map(str, node['secnumber'])) +
|
||||||
self.secnumber_suffix)
|
self.secnumber_suffix)
|
||||||
@ -329,10 +291,8 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append('.'.join(map(str, numbers)) +
|
self.body.append('.'.join(map(str, numbers)) +
|
||||||
self.secnumber_suffix)
|
self.secnumber_suffix)
|
||||||
|
|
||||||
def add_fignumber(self, node):
|
def add_fignumber(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
def append_fignumber(figtype: str, figure_id: str) -> None:
|
||||||
def append_fignumber(figtype, figure_id):
|
|
||||||
# type: (str, str) -> None
|
|
||||||
if self.builder.name == 'singlehtml':
|
if self.builder.name == 'singlehtml':
|
||||||
key = "%s/%s" % (self.docnames[-1], figtype)
|
key = "%s/%s" % (self.docnames[-1], figtype)
|
||||||
else:
|
else:
|
||||||
@ -357,14 +317,12 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
else:
|
else:
|
||||||
append_fignumber(figtype, node['ids'][0])
|
append_fignumber(figtype, node['ids'][0])
|
||||||
|
|
||||||
def add_permalink_ref(self, node, title):
|
def add_permalink_ref(self, node: Element, title: str) -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
if node['ids'] and self.permalink_text and self.builder.add_permalinks:
|
if node['ids'] and self.permalink_text and self.builder.add_permalinks:
|
||||||
format = '<a class="headerlink" href="#%s" title="%s">%s</a>'
|
format = '<a class="headerlink" href="#%s" title="%s">%s</a>'
|
||||||
self.body.append(format % (node['ids'][0], title, self.permalink_text))
|
self.body.append(format % (node['ids'][0], title, self.permalink_text))
|
||||||
|
|
||||||
def generate_targets_for_listing(self, node):
|
def generate_targets_for_listing(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
"""Generate hyperlink targets for listings.
|
"""Generate hyperlink targets for listings.
|
||||||
|
|
||||||
Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list()
|
Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list()
|
||||||
@ -379,8 +337,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
node['ids'].remove(id)
|
node['ids'].remove(id)
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_bullet_list(self, node):
|
def visit_bullet_list(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if len(node) == 1 and isinstance(node[0], addnodes.toctree):
|
if len(node) == 1 and isinstance(node[0], addnodes.toctree):
|
||||||
# avoid emitting empty <ul></ul>
|
# avoid emitting empty <ul></ul>
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
@ -388,46 +345,39 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
super().visit_bullet_list(node)
|
super().visit_bullet_list(node)
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_enumerated_list(self, node):
|
def visit_enumerated_list(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.generate_targets_for_listing(node)
|
self.generate_targets_for_listing(node)
|
||||||
super().visit_enumerated_list(node)
|
super().visit_enumerated_list(node)
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_definition(self, node):
|
def visit_definition(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
# don't insert </dt> here.
|
# don't insert </dt> here.
|
||||||
self.body.append(self.starttag(node, 'dd', ''))
|
self.body.append(self.starttag(node, 'dd', ''))
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def depart_definition(self, node):
|
def depart_definition(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</dd>\n')
|
self.body.append('</dd>\n')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_classifier(self, node):
|
def visit_classifier(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'span', '', CLASS='classifier'))
|
self.body.append(self.starttag(node, 'span', '', CLASS='classifier'))
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def depart_classifier(self, node):
|
def depart_classifier(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</span>')
|
self.body.append('</span>')
|
||||||
|
|
||||||
next_node = node.next_node(descend=False, siblings=True) # type: nodes.Node
|
next_node = node.next_node(descend=False, siblings=True) # type: Node
|
||||||
if not isinstance(next_node, nodes.classifier):
|
if not isinstance(next_node, nodes.classifier):
|
||||||
# close `<dt>` tag at the tail of classifiers
|
# close `<dt>` tag at the tail of classifiers
|
||||||
self.body.append('</dt>')
|
self.body.append('</dt>')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_term(self, node):
|
def visit_term(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'dt', ''))
|
self.body.append(self.starttag(node, 'dt', ''))
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def depart_term(self, node):
|
def depart_term(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
next_node = node.next_node(descend=False, siblings=True) # type: Node
|
||||||
next_node = node.next_node(descend=False, siblings=True) # type: nodes.Node
|
|
||||||
if isinstance(next_node, nodes.classifier):
|
if isinstance(next_node, nodes.classifier):
|
||||||
# Leave the end tag to `self.depart_classifier()`, in case
|
# Leave the end tag to `self.depart_classifier()`, in case
|
||||||
# there's a classifier.
|
# there's a classifier.
|
||||||
@ -436,16 +386,14 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append('</dt>')
|
self.body.append('</dt>')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_title(self, node):
|
def visit_title(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
super().visit_title(node)
|
super().visit_title(node)
|
||||||
self.add_secnumber(node)
|
self.add_secnumber(node)
|
||||||
self.add_fignumber(node.parent)
|
self.add_fignumber(node.parent)
|
||||||
if isinstance(node.parent, nodes.table):
|
if isinstance(node.parent, nodes.table):
|
||||||
self.body.append('<span class="caption-text">')
|
self.body.append('<span class="caption-text">')
|
||||||
|
|
||||||
def depart_title(self, node):
|
def depart_title(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
close_tag = self.context[-1]
|
close_tag = self.context[-1]
|
||||||
if (self.permalink_text and self.builder.add_permalinks and
|
if (self.permalink_text and self.builder.add_permalinks and
|
||||||
node.parent.hasattr('ids') and node.parent['ids']):
|
node.parent.hasattr('ids') and node.parent['ids']):
|
||||||
@ -467,8 +415,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
super().depart_title(node)
|
super().depart_title(node)
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_literal_block(self, node):
|
def visit_literal_block(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if node.rawsource != node.astext():
|
if node.rawsource != node.astext():
|
||||||
# most probably a parsed-literal block -- don't highlight
|
# most probably a parsed-literal block -- don't highlight
|
||||||
return super().visit_literal_block(node)
|
return super().visit_literal_block(node)
|
||||||
@ -492,8 +439,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append(starttag + highlighted + '</div>\n')
|
self.body.append(starttag + highlighted + '</div>\n')
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def visit_caption(self, node):
|
def visit_caption(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if isinstance(node.parent, nodes.container) and node.parent.get('literal_block'):
|
if isinstance(node.parent, nodes.container) and node.parent.get('literal_block'):
|
||||||
self.body.append('<div class="code-block-caption">')
|
self.body.append('<div class="code-block-caption">')
|
||||||
else:
|
else:
|
||||||
@ -501,8 +447,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.add_fignumber(node.parent)
|
self.add_fignumber(node.parent)
|
||||||
self.body.append(self.starttag(node, 'span', '', CLASS='caption-text'))
|
self.body.append(self.starttag(node, 'span', '', CLASS='caption-text'))
|
||||||
|
|
||||||
def depart_caption(self, node):
|
def depart_caption(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</span>')
|
self.body.append('</span>')
|
||||||
|
|
||||||
# append permalink if available
|
# append permalink if available
|
||||||
@ -518,22 +463,18 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
else:
|
else:
|
||||||
super().depart_caption(node)
|
super().depart_caption(node)
|
||||||
|
|
||||||
def visit_doctest_block(self, node):
|
def visit_doctest_block(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_literal_block(node)
|
self.visit_literal_block(node)
|
||||||
|
|
||||||
# overwritten to add the <div> (for XHTML compliance)
|
# overwritten to add the <div> (for XHTML compliance)
|
||||||
def visit_block_quote(self, node):
|
def visit_block_quote(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'blockquote') + '<div>')
|
self.body.append(self.starttag(node, 'blockquote') + '<div>')
|
||||||
|
|
||||||
def depart_block_quote(self, node):
|
def depart_block_quote(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</div></blockquote>\n')
|
self.body.append('</div></blockquote>\n')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_literal(self, node):
|
def visit_literal(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if 'kbd' in node['classes']:
|
if 'kbd' in node['classes']:
|
||||||
self.body.append(self.starttag(node, 'kbd', '',
|
self.body.append(self.starttag(node, 'kbd', '',
|
||||||
CLASS='docutils literal notranslate'))
|
CLASS='docutils literal notranslate'))
|
||||||
@ -542,16 +483,14 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
CLASS='docutils literal notranslate'))
|
CLASS='docutils literal notranslate'))
|
||||||
self.protect_literal_text += 1
|
self.protect_literal_text += 1
|
||||||
|
|
||||||
def depart_literal(self, node):
|
def depart_literal(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if 'kbd' in node['classes']:
|
if 'kbd' in node['classes']:
|
||||||
self.body.append('</kbd>')
|
self.body.append('</kbd>')
|
||||||
else:
|
else:
|
||||||
self.protect_literal_text -= 1
|
self.protect_literal_text -= 1
|
||||||
self.body.append('</code>')
|
self.body.append('</code>')
|
||||||
|
|
||||||
def visit_productionlist(self, node):
|
def visit_productionlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'pre'))
|
self.body.append(self.starttag(node, 'pre'))
|
||||||
names = []
|
names = []
|
||||||
productionlist = cast(Iterable[addnodes.production], node)
|
productionlist = cast(Iterable[addnodes.production], node)
|
||||||
@ -571,30 +510,24 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append('</pre>\n')
|
self.body.append('</pre>\n')
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def depart_productionlist(self, node):
|
def depart_productionlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_production(self, node):
|
def visit_production(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_production(self, node):
|
def depart_production(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_centered(self, node):
|
def visit_centered(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.starttag(node, 'p', CLASS="centered") +
|
self.body.append(self.starttag(node, 'p', CLASS="centered") +
|
||||||
'<strong>')
|
'<strong>')
|
||||||
|
|
||||||
def depart_centered(self, node):
|
def depart_centered(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</strong></p>')
|
self.body.append('</strong></p>')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def should_be_compact_paragraph(self, node):
|
def should_be_compact_paragraph(self, node: Node) -> bool:
|
||||||
# type: (nodes.Node) -> bool
|
|
||||||
"""Determine if the <p> tags around paragraph can be omitted."""
|
"""Determine if the <p> tags around paragraph can be omitted."""
|
||||||
if isinstance(node.parent, addnodes.desc_content):
|
if isinstance(node.parent, addnodes.desc_content):
|
||||||
# Never compact desc_content items.
|
# Never compact desc_content items.
|
||||||
@ -604,16 +537,13 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
return False
|
return False
|
||||||
return super().should_be_compact_paragraph(node)
|
return super().should_be_compact_paragraph(node)
|
||||||
|
|
||||||
def visit_compact_paragraph(self, node):
|
def visit_compact_paragraph(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_compact_paragraph(self, node):
|
def depart_compact_paragraph(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_download_reference(self, node):
|
def visit_download_reference(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
atts = {'class': 'reference download',
|
atts = {'class': 'reference download',
|
||||||
'download': ''}
|
'download': ''}
|
||||||
|
|
||||||
@ -632,13 +562,11 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
else:
|
else:
|
||||||
self.context.append('')
|
self.context.append('')
|
||||||
|
|
||||||
def depart_download_reference(self, node):
|
def depart_download_reference(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append(self.context.pop())
|
self.body.append(self.context.pop())
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_image(self, node):
|
def visit_image(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
olduri = node['uri']
|
olduri = node['uri']
|
||||||
# rewrite the URI if the environment knows about it
|
# rewrite the URI if the environment knows about it
|
||||||
if olduri in self.builder.images:
|
if olduri in self.builder.images:
|
||||||
@ -679,67 +607,53 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
super().visit_image(node)
|
super().visit_image(node)
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def depart_image(self, node):
|
def depart_image(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if node['uri'].lower().endswith(('svg', 'svgz')):
|
if node['uri'].lower().endswith(('svg', 'svgz')):
|
||||||
self.body.append(self.context.pop())
|
self.body.append(self.context.pop())
|
||||||
else:
|
else:
|
||||||
super().depart_image(node)
|
super().depart_image(node)
|
||||||
|
|
||||||
def visit_toctree(self, node):
|
def visit_toctree(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
# this only happens when formatting a toc from env.tocs -- in this
|
# this only happens when formatting a toc from env.tocs -- in this
|
||||||
# case we don't want to include the subtree
|
# case we don't want to include the subtree
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def visit_index(self, node):
|
def visit_index(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def visit_tabular_col_spec(self, node):
|
def visit_tabular_col_spec(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def visit_glossary(self, node):
|
def visit_glossary(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_glossary(self, node):
|
def depart_glossary(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_acks(self, node):
|
def visit_acks(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def depart_acks(self, node):
|
def depart_acks(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_hlist(self, node):
|
def visit_hlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('<table class="hlist"><tr>')
|
self.body.append('<table class="hlist"><tr>')
|
||||||
|
|
||||||
def depart_hlist(self, node):
|
def depart_hlist(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</tr></table>\n')
|
self.body.append('</tr></table>\n')
|
||||||
|
|
||||||
def visit_hlistcol(self, node):
|
def visit_hlistcol(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('<td>')
|
self.body.append('<td>')
|
||||||
|
|
||||||
def depart_hlistcol(self, node):
|
def depart_hlistcol(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</td>')
|
self.body.append('</td>')
|
||||||
|
|
||||||
def visit_option_group(self, node):
|
def visit_option_group(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
super().visit_option_group(node)
|
super().visit_option_group(node)
|
||||||
self.context[-2] = self.context[-2].replace(' ', ' ')
|
self.context[-2] = self.context[-2].replace(' ', ' ')
|
||||||
|
|
||||||
# overwritten
|
# overwritten
|
||||||
def visit_Text(self, node):
|
def visit_Text(self, node: Text) -> None:
|
||||||
# type: (nodes.Text) -> None
|
|
||||||
text = node.astext()
|
text = node.astext()
|
||||||
encoded = self.encode(text)
|
encoded = self.encode(text)
|
||||||
if self.protect_literal_text:
|
if self.protect_literal_text:
|
||||||
@ -760,127 +674,99 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
encoded = self.cloak_email(encoded)
|
encoded = self.cloak_email(encoded)
|
||||||
self.body.append(encoded)
|
self.body.append(encoded)
|
||||||
|
|
||||||
def visit_note(self, node):
|
def visit_note(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'note')
|
self.visit_admonition(node, 'note')
|
||||||
|
|
||||||
def depart_note(self, node):
|
def depart_note(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_warning(self, node):
|
def visit_warning(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'warning')
|
self.visit_admonition(node, 'warning')
|
||||||
|
|
||||||
def depart_warning(self, node):
|
def depart_warning(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_attention(self, node):
|
def visit_attention(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'attention')
|
self.visit_admonition(node, 'attention')
|
||||||
|
|
||||||
def depart_attention(self, node):
|
def depart_attention(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_caution(self, node):
|
def visit_caution(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'caution')
|
self.visit_admonition(node, 'caution')
|
||||||
|
|
||||||
def depart_caution(self, node):
|
def depart_caution(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_danger(self, node):
|
def visit_danger(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'danger')
|
self.visit_admonition(node, 'danger')
|
||||||
|
|
||||||
def depart_danger(self, node):
|
def depart_danger(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_error(self, node):
|
def visit_error(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'error')
|
self.visit_admonition(node, 'error')
|
||||||
|
|
||||||
def depart_error(self, node):
|
def depart_error(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_hint(self, node):
|
def visit_hint(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'hint')
|
self.visit_admonition(node, 'hint')
|
||||||
|
|
||||||
def depart_hint(self, node):
|
def depart_hint(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_important(self, node):
|
def visit_important(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'important')
|
self.visit_admonition(node, 'important')
|
||||||
|
|
||||||
def depart_important(self, node):
|
def depart_important(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_tip(self, node):
|
def visit_tip(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_admonition(node, 'tip')
|
self.visit_admonition(node, 'tip')
|
||||||
|
|
||||||
def depart_tip(self, node):
|
def depart_tip(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.depart_admonition(node)
|
self.depart_admonition(node)
|
||||||
|
|
||||||
def visit_literal_emphasis(self, node):
|
def visit_literal_emphasis(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
return self.visit_emphasis(node)
|
return self.visit_emphasis(node)
|
||||||
|
|
||||||
def depart_literal_emphasis(self, node):
|
def depart_literal_emphasis(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
return self.depart_emphasis(node)
|
return self.depart_emphasis(node)
|
||||||
|
|
||||||
def visit_literal_strong(self, node):
|
def visit_literal_strong(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
return self.visit_strong(node)
|
return self.visit_strong(node)
|
||||||
|
|
||||||
def depart_literal_strong(self, node):
|
def depart_literal_strong(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
return self.depart_strong(node)
|
return self.depart_strong(node)
|
||||||
|
|
||||||
def visit_abbreviation(self, node):
|
def visit_abbreviation(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
attrs = {}
|
attrs = {}
|
||||||
if node.hasattr('explanation'):
|
if node.hasattr('explanation'):
|
||||||
attrs['title'] = node['explanation']
|
attrs['title'] = node['explanation']
|
||||||
self.body.append(self.starttag(node, 'abbr', '', **attrs))
|
self.body.append(self.starttag(node, 'abbr', '', **attrs))
|
||||||
|
|
||||||
def depart_abbreviation(self, node):
|
def depart_abbreviation(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.body.append('</abbr>')
|
self.body.append('</abbr>')
|
||||||
|
|
||||||
def visit_manpage(self, node):
|
def visit_manpage(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self.visit_literal_emphasis(node)
|
self.visit_literal_emphasis(node)
|
||||||
if self.manpages_url:
|
if self.manpages_url:
|
||||||
node['refuri'] = self.manpages_url.format(**node.attributes)
|
node['refuri'] = self.manpages_url.format(**node.attributes)
|
||||||
self.visit_reference(node)
|
self.visit_reference(node)
|
||||||
|
|
||||||
def depart_manpage(self, node):
|
def depart_manpage(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
if self.manpages_url:
|
if self.manpages_url:
|
||||||
self.depart_reference(node)
|
self.depart_reference(node)
|
||||||
self.depart_literal_emphasis(node)
|
self.depart_literal_emphasis(node)
|
||||||
|
|
||||||
# overwritten to add even/odd classes
|
# overwritten to add even/odd classes
|
||||||
|
|
||||||
def visit_table(self, node):
|
def visit_table(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self._table_row_index = 0
|
self._table_row_index = 0
|
||||||
return super().visit_table(node)
|
return super().visit_table(node)
|
||||||
|
|
||||||
def visit_row(self, node):
|
def visit_row(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self._table_row_index += 1
|
self._table_row_index += 1
|
||||||
if self._table_row_index % 2 == 0:
|
if self._table_row_index % 2 == 0:
|
||||||
node['classes'].append('row-even')
|
node['classes'].append('row-even')
|
||||||
@ -889,19 +775,16 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
self.body.append(self.starttag(node, 'tr', ''))
|
self.body.append(self.starttag(node, 'tr', ''))
|
||||||
node.column = 0 # type: ignore
|
node.column = 0 # type: ignore
|
||||||
|
|
||||||
def visit_entry(self, node):
|
def visit_entry(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
super().visit_entry(node)
|
super().visit_entry(node)
|
||||||
if self.body[-1] == ' ':
|
if self.body[-1] == ' ':
|
||||||
self.body[-1] = ' '
|
self.body[-1] = ' '
|
||||||
|
|
||||||
def visit_field_list(self, node):
|
def visit_field_list(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self._fieldlist_row_index = 0
|
self._fieldlist_row_index = 0
|
||||||
return super().visit_field_list(node)
|
return super().visit_field_list(node)
|
||||||
|
|
||||||
def visit_field(self, node):
|
def visit_field(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
self._fieldlist_row_index += 1
|
self._fieldlist_row_index += 1
|
||||||
if self._fieldlist_row_index % 2 == 0:
|
if self._fieldlist_row_index % 2 == 0:
|
||||||
node['classes'].append('field-even')
|
node['classes'].append('field-even')
|
||||||
@ -909,69 +792,59 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
node['classes'].append('field-odd')
|
node['classes'].append('field-odd')
|
||||||
self.body.append(self.starttag(node, 'tr', '', CLASS='field'))
|
self.body.append(self.starttag(node, 'tr', '', CLASS='field'))
|
||||||
|
|
||||||
def visit_field_name(self, node):
|
def visit_field_name(self, node: Element) -> None:
|
||||||
# type: (nodes.Element) -> None
|
|
||||||
context_count = len(self.context)
|
context_count = len(self.context)
|
||||||
super().visit_field_name(node)
|
super().visit_field_name(node)
|
||||||
if context_count != len(self.context):
|
if context_count != len(self.context):
|
||||||
self.context[-1] = self.context[-1].replace(' ', ' ')
|
self.context[-1] = self.context[-1].replace(' ', ' ')
|
||||||
|
|
||||||
def visit_math(self, node, math_env=''):
|
def visit_math(self, node: Element, math_env: str = '') -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
name = self.builder.math_renderer_name
|
name = self.builder.math_renderer_name
|
||||||
visit, _ = self.builder.app.registry.html_inline_math_renderers[name]
|
visit, _ = self.builder.app.registry.html_inline_math_renderers[name]
|
||||||
visit(self, node)
|
visit(self, node)
|
||||||
|
|
||||||
def depart_math(self, node, math_env=''):
|
def depart_math(self, node: Element, math_env: str = '') -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
name = self.builder.math_renderer_name
|
name = self.builder.math_renderer_name
|
||||||
_, depart = self.builder.app.registry.html_inline_math_renderers[name]
|
_, depart = self.builder.app.registry.html_inline_math_renderers[name]
|
||||||
if depart:
|
if depart:
|
||||||
depart(self, node)
|
depart(self, node)
|
||||||
|
|
||||||
def visit_math_block(self, node, math_env=''):
|
def visit_math_block(self, node: Element, math_env: str = '') -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
name = self.builder.math_renderer_name
|
name = self.builder.math_renderer_name
|
||||||
visit, _ = self.builder.app.registry.html_block_math_renderers[name]
|
visit, _ = self.builder.app.registry.html_block_math_renderers[name]
|
||||||
visit(self, node)
|
visit(self, node)
|
||||||
|
|
||||||
def depart_math_block(self, node, math_env=''):
|
def depart_math_block(self, node: Element, math_env: str = '') -> None:
|
||||||
# type: (nodes.Element, str) -> None
|
|
||||||
name = self.builder.math_renderer_name
|
name = self.builder.math_renderer_name
|
||||||
_, depart = self.builder.app.registry.html_block_math_renderers[name]
|
_, depart = self.builder.app.registry.html_block_math_renderers[name]
|
||||||
if depart:
|
if depart:
|
||||||
depart(self, node)
|
depart(self, node)
|
||||||
|
|
||||||
def unknown_visit(self, node):
|
def unknown_visit(self, node: Node) -> None:
|
||||||
# type: (nodes.Node) -> None
|
|
||||||
raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
|
raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
|
||||||
|
|
||||||
# --------- METHODS FOR COMPATIBILITY --------------------------------------
|
# --------- METHODS FOR COMPATIBILITY --------------------------------------
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def highlightlang(self):
|
def highlightlang(self) -> str:
|
||||||
# type: () -> str
|
|
||||||
warnings.warn('HTMLTranslator.highlightlang is deprecated.',
|
warnings.warn('HTMLTranslator.highlightlang is deprecated.',
|
||||||
RemovedInSphinx30Warning, stacklevel=2)
|
RemovedInSphinx30Warning, stacklevel=2)
|
||||||
return self.builder.config.highlight_language
|
return self.builder.config.highlight_language
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def highlightlang_base(self):
|
def highlightlang_base(self) -> str:
|
||||||
# type: () -> str
|
|
||||||
warnings.warn('HTMLTranslator.highlightlang_base is deprecated.',
|
warnings.warn('HTMLTranslator.highlightlang_base is deprecated.',
|
||||||
RemovedInSphinx30Warning)
|
RemovedInSphinx30Warning)
|
||||||
return self.builder.config.highlight_language
|
return self.builder.config.highlight_language
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def highlightopts(self):
|
def highlightopts(self) -> str:
|
||||||
# type: () -> str
|
|
||||||
warnings.warn('HTMLTranslator.highlightopts is deprecated.',
|
warnings.warn('HTMLTranslator.highlightopts is deprecated.',
|
||||||
RemovedInSphinx30Warning, stacklevel=2)
|
RemovedInSphinx30Warning, stacklevel=2)
|
||||||
return self.builder.config.highlight_options
|
return self.builder.config.highlight_options
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def highlightlinenothreshold(self):
|
def highlightlinenothreshold(self) -> int:
|
||||||
# type: () -> int
|
|
||||||
warnings.warn('HTMLTranslator.highlightlinenothreshold is deprecated.',
|
warnings.warn('HTMLTranslator.highlightlinenothreshold is deprecated.',
|
||||||
RemovedInSphinx30Warning, stacklevel=2)
|
RemovedInSphinx30Warning, stacklevel=2)
|
||||||
return sys.maxsize
|
return sys.maxsize
|
||||||
|
Loading…
Reference in New Issue
Block a user