mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Decl styling, update writers
Add test objects so all builders gets exposed to the new nodes. Make the fallback node post-transform change desc_inline as well. Make the html4, latex, and text writers handle desc_inline.
This commit is contained in:
@@ -206,7 +206,7 @@ class OnlyNodeTransform(SphinxPostTransform):
|
|||||||
|
|
||||||
|
|
||||||
class SigElementFallbackTransform(SphinxPostTransform):
|
class SigElementFallbackTransform(SphinxPostTransform):
|
||||||
"""Fallback desc_sig_element nodes to inline if translator does not supported them."""
|
"""Fallback various desc_* nodes to inline if translator does not supported them."""
|
||||||
default_priority = 200
|
default_priority = 200
|
||||||
|
|
||||||
def run(self, **kwargs: Any) -> None:
|
def run(self, **kwargs: Any) -> None:
|
||||||
@@ -218,14 +218,15 @@ class SigElementFallbackTransform(SphinxPostTransform):
|
|||||||
# subclass of SphinxTranslator supports desc_sig_element nodes automatically.
|
# subclass of SphinxTranslator supports desc_sig_element nodes automatically.
|
||||||
return
|
return
|
||||||
|
|
||||||
if all(has_visitor(translator, node) for node in addnodes.SIG_ELEMENTS):
|
# for the leaf elements (desc_sig_element), the translator should support _all_
|
||||||
# the translator supports all desc_sig_element nodes
|
if not all(has_visitor(translator, node) for node in addnodes.SIG_ELEMENTS):
|
||||||
return
|
self.fallback(addnodes.desc_sig_element)
|
||||||
else:
|
|
||||||
self.fallback()
|
|
||||||
|
|
||||||
def fallback(self) -> None:
|
if not has_visitor(translator, addnodes.desc_inline):
|
||||||
for node in self.document.traverse(addnodes.desc_sig_element):
|
self.fallback(addnodes.desc_inline)
|
||||||
|
|
||||||
|
def fallback(self, nodeType: Any) -> None:
|
||||||
|
for node in self.document.traverse(nodeType):
|
||||||
newnode = nodes.inline()
|
newnode = nodes.inline()
|
||||||
newnode.update_all_atts(node)
|
newnode.update_all_atts(node)
|
||||||
newnode.extend(node)
|
newnode.extend(node)
|
||||||
|
|||||||
@@ -146,6 +146,12 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
def depart_desc_content(self, node: Element) -> None:
|
def depart_desc_content(self, node: Element) -> None:
|
||||||
self.body.append('</dd>')
|
self.body.append('</dd>')
|
||||||
|
|
||||||
|
def visit_desc_inline(self, node: Element) -> None:
|
||||||
|
self.body.append(self.starttag(node, 'span', ''))
|
||||||
|
|
||||||
|
def depart_desc_inline(self, node: Element) -> None:
|
||||||
|
self.body.append('</span>')
|
||||||
|
|
||||||
# Nodes for high-level structure in signatures
|
# Nodes for high-level structure in signatures
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
|
|||||||
@@ -698,6 +698,13 @@ class LaTeXTranslator(SphinxTranslator):
|
|||||||
def depart_subtitle(self, node: Element) -> None:
|
def depart_subtitle(self, node: Element) -> None:
|
||||||
self.body.append(self.context.pop())
|
self.body.append(self.context.pop())
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# Domain-specific object descriptions
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
# Top-level nodes for descriptions
|
||||||
|
##################################
|
||||||
|
|
||||||
def visit_desc(self, node: Element) -> None:
|
def visit_desc(self, node: Element) -> None:
|
||||||
if self.config.latex_show_urls == 'footnote':
|
if self.config.latex_show_urls == 'footnote':
|
||||||
self.body.append(BLANKLINE)
|
self.body.append(BLANKLINE)
|
||||||
@@ -750,6 +757,31 @@ class LaTeXTranslator(SphinxTranslator):
|
|||||||
def depart_desc_signature_line(self, node: Element) -> None:
|
def depart_desc_signature_line(self, node: Element) -> None:
|
||||||
self._depart_signature_line(node)
|
self._depart_signature_line(node)
|
||||||
|
|
||||||
|
def visit_desc_content(self, node: Element) -> None:
|
||||||
|
if node.children and not isinstance(node.children[0], nodes.paragraph):
|
||||||
|
# avoid empty desc environment which causes a formatting bug
|
||||||
|
self.body.append('~')
|
||||||
|
|
||||||
|
def depart_desc_content(self, node: Element) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def visit_desc_inline(self, node: Element) -> None:
|
||||||
|
self.body.append(r'\sphinxcode{\sphinxupquote{')
|
||||||
|
|
||||||
|
def depart_desc_inline(self, node: Element) -> None:
|
||||||
|
self.body.append('}}')
|
||||||
|
|
||||||
|
# Nodes for high-level structure in signatures
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
def visit_desc_name(self, node: Element) -> None:
|
||||||
|
self.body.append(r'\sphinxbfcode{\sphinxupquote{')
|
||||||
|
self.literal_whitespace += 1
|
||||||
|
|
||||||
|
def depart_desc_name(self, node: Element) -> None:
|
||||||
|
self.body.append('}}')
|
||||||
|
self.literal_whitespace -= 1
|
||||||
|
|
||||||
def visit_desc_addname(self, node: Element) -> None:
|
def visit_desc_addname(self, node: Element) -> None:
|
||||||
self.body.append(r'\sphinxcode{\sphinxupquote{')
|
self.body.append(r'\sphinxcode{\sphinxupquote{')
|
||||||
self.literal_whitespace += 1
|
self.literal_whitespace += 1
|
||||||
@@ -770,14 +802,6 @@ class LaTeXTranslator(SphinxTranslator):
|
|||||||
def depart_desc_returns(self, node: Element) -> None:
|
def depart_desc_returns(self, node: Element) -> None:
|
||||||
self.body.append(r'}')
|
self.body.append(r'}')
|
||||||
|
|
||||||
def visit_desc_name(self, node: Element) -> None:
|
|
||||||
self.body.append(r'\sphinxbfcode{\sphinxupquote{')
|
|
||||||
self.literal_whitespace += 1
|
|
||||||
|
|
||||||
def depart_desc_name(self, node: Element) -> None:
|
|
||||||
self.body.append('}}')
|
|
||||||
self.literal_whitespace -= 1
|
|
||||||
|
|
||||||
def visit_desc_parameterlist(self, node: Element) -> None:
|
def visit_desc_parameterlist(self, node: Element) -> None:
|
||||||
# close name, open parameterlist
|
# close name, open parameterlist
|
||||||
self.body.append('}{')
|
self.body.append('}{')
|
||||||
@@ -811,13 +835,7 @@ class LaTeXTranslator(SphinxTranslator):
|
|||||||
def depart_desc_annotation(self, node: Element) -> None:
|
def depart_desc_annotation(self, node: Element) -> None:
|
||||||
self.body.append('}}')
|
self.body.append('}}')
|
||||||
|
|
||||||
def visit_desc_content(self, node: Element) -> None:
|
##############################################
|
||||||
if node.children and not isinstance(node.children[0], nodes.paragraph):
|
|
||||||
# avoid empty desc environment which causes a formatting bug
|
|
||||||
self.body.append('~')
|
|
||||||
|
|
||||||
def depart_desc_content(self, node: Element) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def visit_seealso(self, node: Element) -> None:
|
def visit_seealso(self, node: Element) -> None:
|
||||||
self.body.append(BLANKLINE)
|
self.body.append(BLANKLINE)
|
||||||
|
|||||||
@@ -120,6 +120,13 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
def depart_start_of_file(self, node: Element) -> None:
|
def depart_start_of_file(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# Domain-specific object descriptions
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
# Top-level nodes for descriptions
|
||||||
|
##################################
|
||||||
|
|
||||||
def visit_desc(self, node: Element) -> None:
|
def visit_desc(self, node: Element) -> None:
|
||||||
self.visit_definition_list(node)
|
self.visit_definition_list(node)
|
||||||
|
|
||||||
@@ -139,6 +146,21 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
def depart_desc_signature_line(self, node: Element) -> None:
|
def depart_desc_signature_line(self, node: Element) -> None:
|
||||||
self.body.append(' ')
|
self.body.append(' ')
|
||||||
|
|
||||||
|
def visit_desc_content(self, node: Element) -> None:
|
||||||
|
self.visit_definition(node)
|
||||||
|
|
||||||
|
def depart_desc_content(self, node: Element) -> None:
|
||||||
|
self.depart_definition(node)
|
||||||
|
|
||||||
|
# Nodes for high-level structure in signatures
|
||||||
|
##############################################
|
||||||
|
|
||||||
|
def visit_desc_name(self, node: Element) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def depart_desc_name(self, node: Element) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
def visit_desc_addname(self, node: Element) -> None:
|
def visit_desc_addname(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -157,12 +179,6 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
def depart_desc_returns(self, node: Element) -> None:
|
def depart_desc_returns(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_desc_name(self, node: Element) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def depart_desc_name(self, node: Element) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def visit_desc_parameterlist(self, node: Element) -> None:
|
def visit_desc_parameterlist(self, node: Element) -> None:
|
||||||
self.body.append('(')
|
self.body.append('(')
|
||||||
self.first_param = 1
|
self.first_param = 1
|
||||||
@@ -191,11 +207,7 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
|
|||||||
def depart_desc_annotation(self, node: Element) -> None:
|
def depart_desc_annotation(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_desc_content(self, node: Element) -> None:
|
##############################################
|
||||||
self.visit_definition(node)
|
|
||||||
|
|
||||||
def depart_desc_content(self, node: Element) -> None:
|
|
||||||
self.depart_definition(node)
|
|
||||||
|
|
||||||
def visit_versionmodified(self, node: Element) -> None:
|
def visit_versionmodified(self, node: Element) -> None:
|
||||||
self.visit_paragraph(node)
|
self.visit_paragraph(node)
|
||||||
|
|||||||
@@ -536,6 +536,13 @@ class TextTranslator(SphinxTranslator):
|
|||||||
def depart_attribution(self, node: Element) -> None:
|
def depart_attribution(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
# Domain-specific object descriptions
|
||||||
|
#############################################################
|
||||||
|
|
||||||
|
# Top-level nodes
|
||||||
|
#################
|
||||||
|
|
||||||
def visit_desc(self, node: Element) -> None:
|
def visit_desc(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -555,6 +562,22 @@ class TextTranslator(SphinxTranslator):
|
|||||||
def depart_desc_signature_line(self, node: Element) -> None:
|
def depart_desc_signature_line(self, node: Element) -> None:
|
||||||
self.add_text('\n')
|
self.add_text('\n')
|
||||||
|
|
||||||
|
def visit_desc_content(self, node: Element) -> None:
|
||||||
|
self.new_state()
|
||||||
|
self.add_text(self.nl)
|
||||||
|
|
||||||
|
def depart_desc_content(self, node: Element) -> None:
|
||||||
|
self.end_state()
|
||||||
|
|
||||||
|
def visit_desc_inline(self, node: Element) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def depart_desc_inline(self, node: Element) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Nodes for high-level structure in signatures
|
||||||
|
##############################################
|
||||||
|
|
||||||
def visit_desc_name(self, node: Element) -> None:
|
def visit_desc_name(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -606,12 +629,7 @@ class TextTranslator(SphinxTranslator):
|
|||||||
def depart_desc_annotation(self, node: Element) -> None:
|
def depart_desc_annotation(self, node: Element) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def visit_desc_content(self, node: Element) -> None:
|
##############################################
|
||||||
self.new_state()
|
|
||||||
self.add_text(self.nl)
|
|
||||||
|
|
||||||
def depart_desc_content(self, node: Element) -> None:
|
|
||||||
self.end_state()
|
|
||||||
|
|
||||||
def visit_figure(self, node: Element) -> None:
|
def visit_figure(self, node: Element) -> None:
|
||||||
self.new_state()
|
self.new_state()
|
||||||
|
|||||||
@@ -213,3 +213,9 @@ CPP domain
|
|||||||
|
|
||||||
.. cpp:function:: T& operator[]( unsigned j )
|
.. cpp:function:: T& operator[]( unsigned j )
|
||||||
const T& operator[]( unsigned j ) const
|
const T& operator[]( unsigned j ) const
|
||||||
|
|
||||||
|
.. cpp:function:: template<typename T1, typename T2> \
|
||||||
|
requires A<T1, T2> \
|
||||||
|
void f()
|
||||||
|
|
||||||
|
- :cpp:expr:`a + b`
|
||||||
|
|||||||
Reference in New Issue
Block a user