|
From: <mi...@us...> - 2023-11-13 22:30:03
|
Revision: 9475
http://sourceforge.net/p/docutils/code/9475
Author: milde
Date: 2023-11-13 22:30:00 +0000 (Mon, 13 Nov 2023)
Log Message:
-----------
Add source and line info to `<admonition>` and `<definition_list>` nodes.
Based on [patch:#202] by Hood Chatham.
Modified Paths:
--------------
trunk/docutils/docutils/parsers/rst/directives/admonitions.py
trunk/docutils/docutils/parsers/rst/states.py
trunk/docutils/test/test_parsers/test_rst/includes/include14.txt
trunk/docutils/test/test_parsers/test_rst/test_source_line.py
Modified: trunk/docutils/docutils/parsers/rst/directives/admonitions.py
===================================================================
--- trunk/docutils/docutils/parsers/rst/directives/admonitions.py 2023-11-13 21:15:49 UTC (rev 9474)
+++ trunk/docutils/docutils/parsers/rst/directives/admonitions.py 2023-11-13 22:30:00 UTC (rev 9475)
@@ -31,6 +31,8 @@
text = '\n'.join(self.content)
admonition_node = self.node_class(text, **self.options)
self.add_name(admonition_node)
+ admonition_node.source, admonition_node.line = \
+ self.state_machine.get_source_and_line(self.lineno)
if self.node_class is nodes.admonition:
title_text = self.arguments[0]
textnodes, messages = self.state.inline_text(title_text,
Modified: trunk/docutils/docutils/parsers/rst/states.py
===================================================================
--- trunk/docutils/docutils/parsers/rst/states.py 2023-11-13 21:15:49 UTC (rev 9474)
+++ trunk/docutils/docutils/parsers/rst/states.py 2023-11-13 22:30:00 UTC (rev 9475)
@@ -2729,6 +2729,8 @@
def indent(self, match, context, next_state):
"""Definition list item."""
definitionlist = nodes.definition_list()
+ (definitionlist.src,
+ definitionlist.line) = self.state_machine.get_source_and_line()
definitionlistitem, blank_finish = self.definition_list_item(context)
definitionlist += definitionlistitem
self.parent += definitionlist
Modified: trunk/docutils/test/test_parsers/test_rst/includes/include14.txt
===================================================================
--- trunk/docutils/test/test_parsers/test_rst/includes/include14.txt 2023-11-13 21:15:49 UTC (rev 9474)
+++ trunk/docutils/test/test_parsers/test_rst/includes/include14.txt 2023-11-13 22:30:00 UTC (rev 9475)
@@ -10,3 +10,10 @@
* second item in line 10
1. enumerated list in line 12
+
+.. admonition:: line 14
+
+ Generic admonition text in line 16
+
+line 18
+ definition list item in line 19
Modified: trunk/docutils/test/test_parsers/test_rst/test_source_line.py
===================================================================
--- trunk/docutils/test/test_parsers/test_rst/test_source_line.py 2023-11-13 21:15:49 UTC (rev 9474)
+++ trunk/docutils/test/test_parsers/test_rst/test_source_line.py 2023-11-13 22:30:00 UTC (rev 9475)
@@ -43,6 +43,8 @@
class TransformTestCase(unittest.TestCase):
+ maxDiff = None
+
def test_transforms(self):
parser = Parser()
settings = get_default_settings(Parser)
@@ -167,11 +169,11 @@
<attribution internal:line="16" internal:source="test data">
attribution in line 16
"""],
-["""\
+[f"""\
Paragraph
-.. include:: %s
-""" % include14,
+.. include:: {include14}
+""",
f"""\
<document source="test data">
<paragraph internal:line="1" internal:source="test data">
@@ -199,6 +201,18 @@
<list_item internal:source="{include14}">
<paragraph internal:line="12" internal:source="{include14}">
enumerated list in line 12
+ <admonition classes="admonition-line-14" internal:line="14" internal:source="{include14}">
+ <title internal:line="14" internal:source="{include14}">
+ line 14
+ <paragraph internal:line="16" internal:source="{include14}">
+ Generic admonition text in line 16
+ <definition_list internal:line="19" internal:source="{include14}">
+ <definition_list_item internal:line="19" internal:source="{include14}">
+ <term internal:line="19" internal:source="{include14}">
+ line 18
+ <definition>
+ <paragraph internal:line="19" internal:source="{include14}">
+ definition list item in line 19
"""],
["""\
Paragraph
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|