summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
authorBrecht Machiels <brecht@mos6581.org>2020-09-08 17:27:57 +0200
committerBrecht Machiels <brecht@mos6581.org>2020-09-08 17:34:02 +0200
commitc9d8eac5ac08583db3fd6fd48164a4c475436ddb (patch)
tree77b2b73a421a93d922585d0013a6d45dd411a44e /sphinx
parentfabe685638c7f8fa24b3b0a44ac264cff5f1d160 (diff)
downloadsphinx-git-c9d8eac5ac08583db3fd6fd48164a4c475436ddb.tar.gz
Don't remove substitution_reference nodes (fix #7953)
SubstitutionDefinitionsRemover is now a SphinxPostTransform, only applied in the Sphinx builder, as was originally the case (see #4827).
Diffstat (limited to 'sphinx')
-rw-r--r--sphinx/builders/latex/transforms.py14
-rw-r--r--sphinx/transforms/references.py15
-rw-r--r--sphinx/writers/texinfo.py9
-rw-r--r--sphinx/writers/text.py3
4 files changed, 27 insertions, 14 deletions
diff --git a/sphinx/builders/latex/transforms.py b/sphinx/builders/latex/transforms.py
index 28841ad77..174483be6 100644
--- a/sphinx/builders/latex/transforms.py
+++ b/sphinx/builders/latex/transforms.py
@@ -13,6 +13,7 @@ from typing import cast
from docutils import nodes
from docutils.nodes import Element, Node
+from docutils.transforms.references import Substitutions
from sphinx import addnodes
from sphinx.application import Sphinx
@@ -38,6 +39,18 @@ class FootnoteDocnameUpdater(SphinxTransform):
node['docname'] = self.env.docname
+class SubstitutionDefinitionsRemover(SphinxPostTransform):
+ """Remove ``substitution_definition node from doctrees."""
+
+ # should be invoked after Substitutions process
+ default_priority = Substitutions.default_priority + 1
+ builders = ('latex',)
+
+ def apply(self, **kwargs: Any) -> None:
+ for node in self.document.traverse(nodes.substitution_definition):
+ node.parent.remove(node)
+
+
class ShowUrlsTransform(SphinxPostTransform):
"""Expand references to inline text or footnotes.
@@ -602,6 +615,7 @@ class IndexInSectionTitleTransform(SphinxTransform):
def setup(app: Sphinx) -> Dict[str, Any]:
app.add_transform(FootnoteDocnameUpdater)
+ app.add_post_transform(SubstitutionDefinitionsRemover)
app.add_post_transform(BibliographyTransform)
app.add_post_transform(CitationReferenceTransform)
app.add_post_transform(DocumentTargetTransform)
diff --git a/sphinx/transforms/references.py b/sphinx/transforms/references.py
index e74d9657d..b6129b0bc 100644
--- a/sphinx/transforms/references.py
+++ b/sphinx/transforms/references.py
@@ -10,8 +10,7 @@
from typing import Any, Dict
-from docutils import nodes
-from docutils.transforms.references import DanglingReferences, Substitutions
+from docutils.transforms.references import DanglingReferences
from sphinx.transforms import SphinxTransform
@@ -20,17 +19,6 @@ if False:
from sphinx.application import Sphinx
-class SubstitutionDefinitionsRemover(SphinxTransform):
- """Remove ``substitution_definition node from doctrees."""
-
- # should be invoked after Substitutions process
- default_priority = Substitutions.default_priority + 1
-
- def apply(self, **kwargs: Any) -> None:
- for node in self.document.traverse(nodes.substitution_definition):
- node.parent.remove(node)
-
-
class SphinxDanglingReferences(DanglingReferences):
"""DanglingReferences transform which does not output info messages."""
@@ -56,7 +44,6 @@ class SphinxDomains(SphinxTransform):
def setup(app: "Sphinx") -> Dict[str, Any]:
- app.add_transform(SubstitutionDefinitionsRemover)
app.add_transform(SphinxDanglingReferences)
app.add_transform(SphinxDomains)
diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py
index 8c52a0868..aef13f3e5 100644
--- a/sphinx/writers/texinfo.py
+++ b/sphinx/writers/texinfo.py
@@ -1242,6 +1242,15 @@ class TexinfoTranslator(SphinxTranslator):
def depart_legend(self, node: Element) -> None:
pass
+ def visit_substitution_reference(self, node: Element) -> None:
+ pass
+
+ def depart_substitution_reference(self, node: Element) -> None:
+ pass
+
+ def visit_substitution_definition(self, node: Element) -> None:
+ raise nodes.SkipNode
+
def visit_system_message(self, node: Element) -> None:
self.body.append('\n@verbatim\n'
'<SYSTEM MESSAGE: %s>\n'
diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py
index 796362260..9cb066e0b 100644
--- a/sphinx/writers/text.py
+++ b/sphinx/writers/text.py
@@ -1013,6 +1013,9 @@ class TextTranslator(SphinxTranslator):
def visit_toctree(self, node: Element) -> None:
raise nodes.SkipNode
+ def visit_substitution_definition(self, node: Element) -> None:
+ raise nodes.SkipNode
+
def visit_pending_xref(self, node: Element) -> None:
pass