Merge pull request #3509 from abathur/html_depart_admonition

Fix #3506: consistently pass node to depart_admonition in HTML writer
This commit is contained in:
Takeshi KOMIYA 2017-03-05 17:38:41 +09:00 committed by GitHub
commit 125b224d80
6 changed files with 62 additions and 15 deletions

View File

@ -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
----------

View File

@ -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):

View File

@ -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):

View File

@ -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)

View File

@ -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

View File

@ -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': [