summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNozomu Kaneko <nozom.kaneko@gmail.com>2013-01-06 18:37:21 +0900
committerNozomu Kaneko <nozom.kaneko@gmail.com>2013-01-06 18:37:21 +0900
commit2ce5da1c1866e2bc52d97fa2118d82590e302ae3 (patch)
tree9e33f0b054cbc7b7545fc24d040f015eef0b89ca
parenta4efeb35deb15f9d27ad0a4f2d76195b8c993d84 (diff)
downloadsphinx-2ce5da1c1866e2bc52d97fa2118d82590e302ae3.tar.gz
versionlabels are handled entirely in the versionmodified directive, instead of the writers.
Now it returns a versionmodified node with the versionlabel already inserted.
-rw-r--r--sphinx/directives/other.py15
-rw-r--r--sphinx/writers/html.py15
-rw-r--r--sphinx/writers/latex.py9
-rw-r--r--sphinx/writers/manpage.py8
-rw-r--r--sphinx/writers/texinfo.py9
-rw-r--r--sphinx/writers/text.py6
-rw-r--r--tests/test_build_html.py9
7 files changed, 27 insertions, 44 deletions
diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py
index 40640415..50188ea4 100644
--- a/sphinx/directives/other.py
+++ b/sphinx/directives/other.py
@@ -14,7 +14,7 @@ from docutils.parsers.rst.directives.misc import Class
from docutils.parsers.rst.directives.misc import Include as BaseInclude
from sphinx import addnodes
-from sphinx.locale import _
+from sphinx.locale import versionlabels, _
from sphinx.util import url_re, docname_join
from sphinx.util.nodes import explicit_title_re, set_source_info, \
process_index_entry
@@ -190,19 +190,24 @@ class VersionChange(Directive):
set_source_info(self, node)
node['type'] = self.name
node['version'] = self.arguments[0]
+ text = versionlabels[self.name] % self.arguments[0]
if len(self.arguments) == 2:
inodes, messages = self.state.inline_text(self.arguments[1],
self.lineno+1)
- node.extend(inodes)
- ret = [node] + messages
+ node.append(nodes.paragraph('', '', *inodes))
else:
- ret = [node]
+ messages = []
if self.content:
self.state.nested_parse(self.content, self.content_offset, node)
+ if len(node):
+ node[0].insert(0, nodes.inline('', '%s: ' % text))
+ else:
+ para = nodes.paragraph('', '', nodes.inline('', '%s.' % text))
+ node.append(para)
env = self.state.document.settings.env
# XXX should record node.source as well
env.note_versionchange(node['type'], node['version'], node, node.line)
- return ret
+ return [node] + messages
class SeeAlso(BaseAdmonition):
diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py
index 252cedc4..d450b2c7 100644
--- a/sphinx/writers/html.py
+++ b/sphinx/writers/html.py
@@ -17,7 +17,7 @@ from docutils import nodes
from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator
from sphinx import addnodes
-from sphinx.locale import admonitionlabels, versionlabels, _
+from sphinx.locale import admonitionlabels, _
from sphinx.util.smartypants import sphinx_smarty_pants
try:
@@ -157,15 +157,9 @@ class HTMLTranslator(BaseTranslator):
self.body.append('</em>')
def visit_versionmodified(self, node):
- self.body.append(self.starttag(node, 'p', CLASS=node['type']))
- text = versionlabels[node['type']] % node['version']
- if len(node):
- text += ': '
- else:
- text += '.'
- self.body.append('<span class="versionmodified">%s</span>' % text)
+ self.body.append(self.starttag(node, 'div', CLASS=node['type']))
def depart_versionmodified(self, node):
- self.body.append('</p>\n')
+ self.body.append('</div>\n')
# overwritten
def visit_reference(self, node):
@@ -310,6 +304,9 @@ class HTMLTranslator(BaseTranslator):
if isinstance(node.parent, addnodes.desc_content):
# Never compact desc_content items.
return False
+ if isinstance(node.parent, addnodes.versionmodified):
+ # Never compact versionmodified nodes.
+ return False
return BaseTranslator.should_be_compact_paragraph(self, node)
def visit_compact_paragraph(self, node):
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index ef2197c6..371c0114 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -22,7 +22,7 @@ from docutils.writers.latex2e import Babel
from sphinx import addnodes
from sphinx import highlighting
from sphinx.errors import SphinxError
-from sphinx.locale import admonitionlabels, versionlabels, _
+from sphinx.locale import admonitionlabels, _
from sphinx.util import split_into
from sphinx.util.osutil import ustrftime
from sphinx.util.pycompat import any
@@ -1053,12 +1053,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
depart_warning = _depart_named_admonition
def visit_versionmodified(self, node):
- intro = versionlabels[node['type']] % node['version']
- if node.children:
- intro += ': '
- else:
- intro += '.'
- self.body.append(intro)
+ pass
def depart_versionmodified(self, node):
pass
diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py
index 6e405d5a..6b68971e 100644
--- a/sphinx/writers/manpage.py
+++ b/sphinx/writers/manpage.py
@@ -20,7 +20,7 @@ except ImportError:
has_manpage_writer = False
from sphinx import addnodes
-from sphinx.locale import admonitionlabels, versionlabels, _
+from sphinx.locale import admonitionlabels, _
from sphinx.util.osutil import ustrftime
@@ -157,12 +157,6 @@ class ManualPageTranslator(BaseTranslator):
def visit_versionmodified(self, node):
self.visit_paragraph(node)
- text = versionlabels[node['type']] % node['version']
- if len(node):
- text += ': '
- else:
- text += '.'
- self.body.append(text)
def depart_versionmodified(self, node):
self.depart_paragraph(node)
diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py
index aa7ed685..cf5cb9ee 100644
--- a/sphinx/writers/texinfo.py
+++ b/sphinx/writers/texinfo.py
@@ -17,7 +17,7 @@ from os import path
from docutils import nodes, writers
from sphinx import addnodes, __version__
-from sphinx.locale import admonitionlabels, versionlabels, _
+from sphinx.locale import admonitionlabels, _
from sphinx.util import ustrftime
from sphinx.writers.latex import collected_footnote
@@ -1225,12 +1225,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
self.body.append('\n')
def visit_versionmodified(self, node):
- intro = versionlabels[node['type']] % node['version']
- if node.children:
- intro += ': '
- else:
- intro += '.'
- self.body.append('\n%s' % self.escape(intro))
+ self.body.append('\n')
def depart_versionmodified(self, node):
self.body.append('\n')
diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py
index 96576911..14d7c952 100644
--- a/sphinx/writers/text.py
+++ b/sphinx/writers/text.py
@@ -17,7 +17,7 @@ from docutils import nodes, writers
from docutils.utils import column_width
from sphinx import addnodes
-from sphinx.locale import admonitionlabels, versionlabels, _
+from sphinx.locale import admonitionlabels, _
class TextWrapper(textwrap.TextWrapper):
@@ -680,10 +680,6 @@ class TextTranslator(nodes.NodeVisitor):
def visit_versionmodified(self, node):
self.new_state(0)
- if node.children:
- self.add_text(versionlabels[node['type']] % node['version'] + ': ')
- else:
- self.add_text(versionlabels[node['type']] % node['version'] + '.')
def depart_versionmodified(self, node):
self.end_state()
diff --git a/tests/test_build_html.py b/tests/test_build_html.py
index 05def19d..616b67f9 100644
--- a/tests/test_build_html.py
+++ b/tests/test_build_html.py
@@ -144,12 +144,13 @@ HTML_XPATH = {
# abbreviations
(".//abbr[@title='abbreviation']", '^abbr$'),
# version stuff
- (".//span[@class='versionmodified']", 'New in version 0.6'),
- (".//p[@class='versionadded']/span[@class='versionmodified']",
+ (".//div[@class='versionadded']/p/span", 'New in version 0.6: '),
+ (".//div[@class='versionadded']/p/span",
tail_check('First paragraph of versionadded')),
- (".//p[@class='versionchanged']/span[@class='versionmodified']",
+ (".//div[@class='versionchanged']/p/span",
tail_check('First paragraph of versionchanged')),
- (".//p", 'Second paragraph of versionchanged'),
+ (".//div[@class='versionchanged']/p",
+ 'Second paragraph of versionchanged'),
# footnote reference
(".//a[@class='footnote-reference']", r'\[1\]'),
# created by reference lookup