mirror of
https://github.com/python/cpython.git
synced 2025-08-19 00:00:48 +00:00
gh-97607: Fix content parsing in the impl-detail reST directive (GH-97652)
* Don't parse content as arg in the impl-detail directive
This does not change the (untranslated) output,
but ensures that the doctree node metadata is correct.
which fixes gh-97607 with the text not being translated.
It also simplifies the code and logic
and makes it consistant with the docutils built-in directives.
* Remove unused branch from impl-detail directive handling no-content case
This is not used anywhere in the docs and lacks a clear use case,
and is more likely a mistake which is now flagged at build time.
This simplifies the logic from two code paths to one,
and makes the behavior consistant with similar built-in directives
(e.g. the various admonition types).
* Further simplify impl-detail reST directive code
(cherry picked from commit e8165d47b8
)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
This commit is contained in:
parent
1fa848ac39
commit
8c528ef4a1
1 changed files with 7 additions and 16 deletions
|
@ -101,33 +101,24 @@ def source_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
||||||
class ImplementationDetail(Directive):
|
class ImplementationDetail(Directive):
|
||||||
|
|
||||||
has_content = True
|
has_content = True
|
||||||
required_arguments = 0
|
|
||||||
optional_arguments = 1
|
|
||||||
final_argument_whitespace = True
|
final_argument_whitespace = True
|
||||||
|
|
||||||
# This text is copied to templates/dummy.html
|
# This text is copied to templates/dummy.html
|
||||||
label_text = 'CPython implementation detail:'
|
label_text = 'CPython implementation detail:'
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
self.assert_has_content()
|
||||||
pnode = nodes.compound(classes=['impl-detail'])
|
pnode = nodes.compound(classes=['impl-detail'])
|
||||||
label = translators['sphinx'].gettext(self.label_text)
|
label = translators['sphinx'].gettext(self.label_text)
|
||||||
content = self.content
|
content = self.content
|
||||||
add_text = nodes.strong(label, label)
|
add_text = nodes.strong(label, label)
|
||||||
if self.arguments:
|
|
||||||
n, m = self.state.inline_text(self.arguments[0], self.lineno)
|
|
||||||
pnode.append(nodes.paragraph('', '', *(n + m)))
|
|
||||||
self.state.nested_parse(content, self.content_offset, pnode)
|
self.state.nested_parse(content, self.content_offset, pnode)
|
||||||
if pnode.children and isinstance(pnode[0], nodes.paragraph):
|
content = nodes.inline(pnode[0].rawsource, translatable=True)
|
||||||
content = nodes.inline(pnode[0].rawsource, translatable=True)
|
content.source = pnode[0].source
|
||||||
content.source = pnode[0].source
|
content.line = pnode[0].line
|
||||||
content.line = pnode[0].line
|
content += pnode[0].children
|
||||||
content += pnode[0].children
|
pnode[0].replace_self(nodes.paragraph(
|
||||||
pnode[0].replace_self(nodes.paragraph('', '', content,
|
'', '', add_text, nodes.Text(' '), content, translatable=False))
|
||||||
translatable=False))
|
|
||||||
pnode[0].insert(0, add_text)
|
|
||||||
pnode[0].insert(1, nodes.Text(' '))
|
|
||||||
else:
|
|
||||||
pnode.insert(0, nodes.paragraph('', '', add_text))
|
|
||||||
return [pnode]
|
return [pnode]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue