diff --git a/CHANGES b/CHANGES index 24bb2ba41..f88820e02 100644 --- a/CHANGES +++ b/CHANGES @@ -89,6 +89,7 @@ Bugs fixed * #1574: Paragraphs in table cell doesn't work in Latex output * #3288: Table with merged headers not wrapping text * #3491: Inconsistent vertical space around table and longtable in PDF +* #3506: Depart functions for all admonitions in HTML writer now properly pass ``node`` to ``depart_admonition``. Deprecated ---------- diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index dba495433..69556aec8 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -736,7 +736,7 @@ class HTMLTranslator(BaseTranslator): def depart_attention(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_caution(self, node): # type: (nodes.Node) -> None @@ -744,7 +744,7 @@ class HTMLTranslator(BaseTranslator): def depart_caution(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_danger(self, node): # type: (nodes.Node) -> None @@ -752,7 +752,7 @@ class HTMLTranslator(BaseTranslator): def depart_danger(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_error(self, node): # type: (nodes.Node) -> None @@ -760,7 +760,7 @@ class HTMLTranslator(BaseTranslator): def depart_error(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_hint(self, node): # type: (nodes.Node) -> None @@ -768,7 +768,7 @@ class HTMLTranslator(BaseTranslator): def depart_hint(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_important(self, node): # type: (nodes.Node) -> None @@ -776,7 +776,7 @@ class HTMLTranslator(BaseTranslator): def depart_important(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_tip(self, node): # type: (nodes.Node) -> None @@ -784,7 +784,7 @@ class HTMLTranslator(BaseTranslator): def depart_tip(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) # these are only handled specially in the SmartyPantsHTMLTranslator def visit_literal_emphasis(self, node): diff --git a/sphinx/writers/html5.py b/sphinx/writers/html5.py index bc9231b17..9deb35a88 100644 --- a/sphinx/writers/html5.py +++ b/sphinx/writers/html5.py @@ -679,7 +679,7 @@ class HTML5Translator(BaseTranslator): def depart_attention(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_caution(self, node): # type: (nodes.Node) -> None @@ -687,7 +687,7 @@ class HTML5Translator(BaseTranslator): def depart_caution(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_danger(self, node): # type: (nodes.Node) -> None @@ -695,7 +695,7 @@ class HTML5Translator(BaseTranslator): def depart_danger(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_error(self, node): # type: (nodes.Node) -> None @@ -703,7 +703,7 @@ class HTML5Translator(BaseTranslator): def depart_error(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_hint(self, node): # type: (nodes.Node) -> None @@ -711,7 +711,7 @@ class HTML5Translator(BaseTranslator): def depart_hint(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_important(self, node): # type: (nodes.Node) -> None @@ -719,7 +719,7 @@ class HTML5Translator(BaseTranslator): def depart_important(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) def visit_tip(self, node): # type: (nodes.Node) -> None @@ -727,7 +727,7 @@ class HTML5Translator(BaseTranslator): def depart_tip(self, node): # type: (nodes.Node) -> None - self.depart_admonition() + self.depart_admonition(node) # these are only handled specially in the SmartyPantsHTML5Translator def visit_literal_emphasis(self, node): diff --git a/tests/roots/test-build-html-translator/conf.py b/tests/roots/test-build-html-translator/conf.py new file mode 100644 index 000000000..2a9301380 --- /dev/null +++ b/tests/roots/test-build-html-translator/conf.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from sphinx.writers.html import HTMLTranslator + +project = 'test' +master_doc = 'index' + + +class ConfHTMLTranslator(HTMLTranslator): + depart_with_node = 0 + + def depart_admonition(self, node=None): + if node is not None: + self.depart_with_node += 1 + HTMLTranslator.depart_admonition(self, node) + + +def setup(app): + app.set_translator('html', ConfHTMLTranslator) diff --git a/tests/roots/test-build-html-translator/index.rst b/tests/roots/test-build-html-translator/index.rst new file mode 100644 index 000000000..1610d2b45 --- /dev/null +++ b/tests/roots/test-build-html-translator/index.rst @@ -0,0 +1,24 @@ +======================= +Test HTML admonitions +======================= + +.. seealso:: test + +.. note:: test + +.. warning:: test + +.. attention:: test + +.. caution:: test + +.. danger:: test + +.. error:: test + +.. hint:: test + +.. important:: test + +.. tip:: test + diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 23e7c7d22..67939a10b 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -17,7 +17,6 @@ from six import PY3 from sphinx import __display_version__ from sphinx.util.inventory import InventoryFile - from util import remove_unicode_literals, strip_escseq import xml.etree.cElementTree as ElementTree from html5lib import getTreeBuilder, HTMLParser @@ -443,6 +442,10 @@ def test_html_output(app, cached_etree_parse, fname, expect): app.build() check_xpath(cached_etree_parse(app.outdir / fname), fname, *expect) +@pytest.mark.sphinx('html', testroot='build-html-translator') +def test_html_translator(app): + app.build() + assert app.builder.docwriter.visitor.depart_with_node == 10 @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [