mirror of
https://github.com/python/cpython.git
synced 2025-08-15 22:30:42 +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):
|
||||
|
||||
has_content = True
|
||||
required_arguments = 0
|
||||
optional_arguments = 1
|
||||
final_argument_whitespace = True
|
||||
|
||||
# This text is copied to templates/dummy.html
|
||||
label_text = 'CPython implementation detail:'
|
||||
|
||||
def run(self):
|
||||
self.assert_has_content()
|
||||
pnode = nodes.compound(classes=['impl-detail'])
|
||||
label = translators['sphinx'].gettext(self.label_text)
|
||||
content = self.content
|
||||
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)
|
||||
if pnode.children and isinstance(pnode[0], nodes.paragraph):
|
||||
content = nodes.inline(pnode[0].rawsource, translatable=True)
|
||||
content.source = pnode[0].source
|
||||
content.line = pnode[0].line
|
||||
content += pnode[0].children
|
||||
pnode[0].replace_self(nodes.paragraph('', '', content,
|
||||
translatable=False))
|
||||
pnode[0].insert(0, add_text)
|
||||
pnode[0].insert(1, nodes.Text(' '))
|
||||
else:
|
||||
pnode.insert(0, nodes.paragraph('', '', add_text))
|
||||
content = nodes.inline(pnode[0].rawsource, translatable=True)
|
||||
content.source = pnode[0].source
|
||||
content.line = pnode[0].line
|
||||
content += pnode[0].children
|
||||
pnode[0].replace_self(nodes.paragraph(
|
||||
'', '', add_text, nodes.Text(' '), content, translatable=False))
|
||||
return [pnode]
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue