Fixed #14033 -- Fixed another problem with xrefs and Sphinx 1.X in the Django doc extension. Thanks for the report and patch, Ramiro Morales and Georg Brandl.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13602 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
68aff2f7be
commit
7098f8444e
|
@ -19,6 +19,7 @@ from sphinx import addnodes, roles
|
||||||
from sphinx.builders.html import StandaloneHTMLBuilder
|
from sphinx.builders.html import StandaloneHTMLBuilder
|
||||||
from sphinx.writers.html import SmartyPantsHTMLTranslator
|
from sphinx.writers.html import SmartyPantsHTMLTranslator
|
||||||
from sphinx.util.console import bold
|
from sphinx.util.console import bold
|
||||||
|
from sphinx.util.compat import Directive
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
|
@ -55,38 +56,46 @@ def setup(app):
|
||||||
parse_node = parse_django_adminopt_node,
|
parse_node = parse_django_adminopt_node,
|
||||||
)
|
)
|
||||||
app.add_config_value('django_next_version', '0.0', True)
|
app.add_config_value('django_next_version', '0.0', True)
|
||||||
app.add_directive('versionadded', parse_version_directive, 1, (1, 1, 1))
|
app.add_directive('versionadded', VersionDirective)
|
||||||
app.add_directive('versionchanged', parse_version_directive, 1, (1, 1, 1))
|
app.add_directive('versionchanged', VersionDirective)
|
||||||
app.add_transform(SuppressBlockquotes)
|
app.add_transform(SuppressBlockquotes)
|
||||||
app.add_builder(DjangoStandaloneHTMLBuilder)
|
app.add_builder(DjangoStandaloneHTMLBuilder)
|
||||||
|
|
||||||
def parse_version_directive(name, arguments, options, content, lineno,
|
|
||||||
content_offset, block_text, state, state_machine):
|
class VersionDirective(Directive):
|
||||||
env = state.document.settings.env
|
has_content = True
|
||||||
is_nextversion = env.config.django_next_version == arguments[0]
|
required_arguments = 1
|
||||||
ret = []
|
optional_arguments = 1
|
||||||
node = addnodes.versionmodified()
|
final_argument_whitespace = True
|
||||||
ret.append(node)
|
option_spec = {}
|
||||||
if not is_nextversion:
|
|
||||||
if len(arguments) == 1:
|
def run(self):
|
||||||
linktext = 'Please, see the release notes <releases-%s>' % (arguments[0])
|
env = self.state.document.settings.env
|
||||||
try:
|
arg0 = self.arguments[0]
|
||||||
xrefs = roles.XRefRole()('ref', linktext, linktext, lineno, state) # Sphinx >= 1.0
|
is_nextversion = env.config.django_next_version == arg0
|
||||||
except:
|
ret = []
|
||||||
xrefs = roles.xfileref_role('ref', linktext, linktext, lineno, state) # Sphinx < 1.0
|
node = addnodes.versionmodified()
|
||||||
node.extend(xrefs[0])
|
ret.append(node)
|
||||||
node['version'] = arguments[0]
|
if not is_nextversion:
|
||||||
else:
|
if len(self.arguments) == 1:
|
||||||
node['version'] = "Development version"
|
linktext = 'Please, see the release notes <releases-%s>' % (arg0)
|
||||||
node['type'] = name
|
try:
|
||||||
if len(arguments) == 2:
|
xrefs = roles.XRefRole()('std:ref', linktext, linktext, self.lineno, self.state) # Sphinx >= 1.0
|
||||||
inodes, messages = state.inline_text(arguments[1], lineno+1)
|
except AttributeError:
|
||||||
node.extend(inodes)
|
xrefs = roles.xfileref_role('ref', linktext, linktext, self.lineno, self.state) # Sphinx < 1.0
|
||||||
if content:
|
node.extend(xrefs[0])
|
||||||
state.nested_parse(content, content_offset, node)
|
node['version'] = arg0
|
||||||
ret = ret + messages
|
else:
|
||||||
env.note_versionchange(node['type'], node['version'], node, lineno)
|
node['version'] = "Development version"
|
||||||
return ret
|
node['type'] = self.name
|
||||||
|
if len(self.arguments) == 2:
|
||||||
|
inodes, messages = self.state.inline_text(self.arguments[1], self.lineno+1)
|
||||||
|
node.extend(inodes)
|
||||||
|
if self.content:
|
||||||
|
self.state.nested_parse(self.content, self.content_offset, node)
|
||||||
|
ret = ret + messages
|
||||||
|
env.note_versionchange(node['type'], node['version'], node, self.lineno)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class SuppressBlockquotes(transforms.Transform):
|
class SuppressBlockquotes(transforms.Transform):
|
||||||
|
@ -185,7 +194,7 @@ def parse_django_adminopt_node(env, sig, signode):
|
||||||
"""A copy of sphinx.directives.CmdoptionDesc.parse_signature()"""
|
"""A copy of sphinx.directives.CmdoptionDesc.parse_signature()"""
|
||||||
try:
|
try:
|
||||||
from sphinx.domains.std import option_desc_re # Sphinx >= 1.0
|
from sphinx.domains.std import option_desc_re # Sphinx >= 1.0
|
||||||
except:
|
except ImportError:
|
||||||
from sphinx.directives.desc import option_desc_re # Sphinx < 1.0
|
from sphinx.directives.desc import option_desc_re # Sphinx < 1.0
|
||||||
count = 0
|
count = 0
|
||||||
firstname = ''
|
firstname = ''
|
||||||
|
|
Loading…
Reference in New Issue