Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't remove substitution_reference nodes (refined) #8354

Merged
merged 2 commits into from Nov 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 14 additions & 0 deletions sphinx/builders/latex/transforms.py
Expand Up @@ -13,6 +13,7 @@

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
Expand All @@ -38,6 +39,18 @@ def apply(self, **kwargs: Any) -> None:
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.

Expand Down Expand Up @@ -602,6 +615,7 @@ def apply(self, **kwargs: Any) -> None:

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)
Expand Down
15 changes: 1 addition & 14 deletions sphinx/transforms/references.py
Expand Up @@ -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

Expand All @@ -20,17 +19,6 @@
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."""

Expand All @@ -56,7 +44,6 @@ def apply(self, **kwargs: Any) -> None:


def setup(app: "Sphinx") -> Dict[str, Any]:
app.add_transform(SubstitutionDefinitionsRemover)
app.add_transform(SphinxDanglingReferences)
app.add_transform(SphinxDomains)

Expand Down
9 changes: 9 additions & 0 deletions sphinx/writers/texinfo.py
Expand Up @@ -1242,6 +1242,15 @@ def visit_legend(self, node: Element) -> None:
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'
Expand Down
3 changes: 3 additions & 0 deletions sphinx/writers/text.py
Expand Up @@ -1013,6 +1013,9 @@ def visit_index(self, node: Element) -> None:
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

Expand Down