|
From: <mi...@us...> - 2021-10-04 13:10:14
|
Revision: 8842
http://sourceforge.net/p/docutils/code/8842
Author: milde
Date: 2021-10-04 13:10:11 +0000 (Mon, 04 Oct 2021)
Log Message:
-----------
Add line, source, and rawsource attributes to blockquote nodes.
Fix docstring for states.Body.split_attribution().
Patch by Mickey Endito.
Modified Paths:
--------------
trunk/docutils/HISTORY.txt
trunk/docutils/docutils/parsers/rst/states.py
trunk/docutils/test/test_parsers/test_rst/test_source_line.py
Modified: trunk/docutils/HISTORY.txt
===================================================================
--- trunk/docutils/HISTORY.txt 2021-10-04 13:10:01 UTC (rev 8841)
+++ trunk/docutils/HISTORY.txt 2021-10-04 13:10:11 UTC (rev 8842)
@@ -67,6 +67,8 @@
- Fix source location (line number) for attribution elements.
Patch by Mickey Endito.
+ - Add line, source, and rawsource internal attributes for blockquote
+ elements. Patch by Mickey Endito.
* docutils/transforms/references.py
Modified: trunk/docutils/docutils/parsers/rst/states.py
===================================================================
--- trunk/docutils/docutils/parsers/rst/states.py 2021-10-04 13:10:01 UTC (rev 8841)
+++ trunk/docutils/docutils/parsers/rst/states.py 2021-10-04 13:10:11 UTC (rev 8842)
@@ -626,6 +626,9 @@
check it for validity. If not found or invalid, generate a warning
and ignore the start-string. Implicit inline markup (e.g. standalone
URIs) is found last.
+
+ :text: source string
+ :lineno: absolute line number (cf. statemachine.get_source_and_line())
"""
self.reporter = memo.reporter
self.document = memo.document
@@ -1171,12 +1174,14 @@
def block_quote(self, indented, line_offset):
elements = []
while indented:
+ blockquote = nodes.block_quote(rawsource='\n'.join(indented))
+ (blockquote.source, blockquote.line) = \
+ self.state_machine.get_source_and_line(line_offset+1)
(blockquote_lines,
attribution_lines,
attribution_offset,
indented,
new_line_offset) = self.split_attribution(indented, line_offset)
- blockquote = nodes.block_quote()
self.nested_parse(blockquote_lines, line_offset, blockquote)
elements.append(blockquote)
if attribution_lines:
@@ -1203,8 +1208,8 @@
* Every line after that must have consistent indentation.
* Attributions must be preceded by block quote content.
- Return a tuple of: (block quote content lines, content offset,
- attribution lines, attribution offset, remaining indented lines).
+ Return a tuple of: (block quote content lines, attribution lines,
+ attribution offset, remaining indented lines, remaining lines offset).
"""
blank = None
nonblank_seen = False
Modified: trunk/docutils/test/test_parsers/test_rst/test_source_line.py
===================================================================
--- trunk/docutils/test/test_parsers/test_rst/test_source_line.py 2021-10-04 13:10:01 UTC (rev 8841)
+++ trunk/docutils/test/test_parsers/test_rst/test_source_line.py 2021-10-04 13:10:11 UTC (rev 8842)
@@ -16,13 +16,12 @@
"""Test internal source and line attributes (for correct error reporting).
This test is to ensure source and line numbers are correct.
-It does not fix the API regarding which nodes have
-source and line attributes -- additional nodes may grow them,
-this is regarded a compatible feature additon.
+It does not fix behaviour regarding which nodes have source/line attributes,
+adding them to more nodes is regarded a compatible feature extension.
"""
# Requires the `universal.ExposeInternals` transform (tested in
-# ``test_transforms/test_expose_internals.py``)
+# ``test_transforms/test_expose_internals.py``)
# to make internal attributes visible.
from __future__ import absolute_import
@@ -53,10 +52,10 @@
With *inline* element in line 2.
Block quote in line 4
-
- -- attribution
+
+ -- attribution
in line 6
-
+
* bullet list in line 9
* second item in line 10
@@ -70,7 +69,7 @@
<emphasis>
inline
element in line 2.
- <block_quote internal:source="test data">
+ <block_quote internal:line="4" internal:source="test data">
<paragraph internal:line="4" internal:source="test data">
Block quote in line 4
<attribution internal:line="6" internal:source="test data">
@@ -92,7 +91,7 @@
Paragraph
Block quote in line 3
-
+
-- attribution in line 5
""",
"""\
@@ -99,7 +98,7 @@
<document source="test data">
<paragraph internal:line="1" internal:source="test data">
Paragraph
- <block_quote internal:source="test data">
+ <block_quote internal:line="3" internal:source="test data">
<paragraph internal:line="3" internal:source="test data">
Block quote in line 3
<attribution internal:line="5" internal:source="test data">
@@ -109,18 +108,18 @@
Paragraph
Block quote in line 3
-
- nested block quote
+
+ nested block quote
in line 5
-
+
double nested quote in line 8
-
+
-- double-nested attribution in line 10
-
+
line 12
-- nested attribution in line 14
-
+
-- attribution in line 16
""",
"""\
@@ -127,14 +126,14 @@
<document source="test data">
<paragraph internal:line="1" internal:source="test data">
Paragraph
- <block_quote internal:source="test data">
+ <block_quote internal:line="3" internal:source="test data">
<paragraph internal:line="3" internal:source="test data">
Block quote in line 3
- <block_quote>
+ <block_quote internal:line="5" internal:source="test data">
<paragraph internal:line="5" internal:source="test data">
nested block quote
in line 5
- <block_quote>
+ <block_quote internal:line="8" internal:source="test data">
<paragraph internal:line="8" internal:source="test data">
double nested quote in line 8
<attribution internal:line="10" internal:source="test data">
@@ -161,7 +160,7 @@
<emphasis>
inline
element in line 2.
- <block_quote internal:source="test_parsers/test_rst/includes/include14.txt">
+ <block_quote internal:line="4" internal:source="test_parsers/test_rst/includes/include14.txt">
<paragraph internal:line="4" internal:source="test_parsers/test_rst/includes/include14.txt">
Block quote in line 4
<attribution internal:line="6" internal:source="test_parsers/test_rst/includes/include14.txt">
@@ -179,6 +178,36 @@
<paragraph internal:line="12" internal:source="test_parsers/test_rst/includes/include14.txt">
enumerated list in line 12
"""],
+["""\
+Paragraph
+
+ Block quote in line 3
+
+ -- attribution in line 5
+
+ Second block quote in line 7
+
+ -- attribution in line 9
+
+Final paragraph in line 11
+""",
+"""\
+<document source="test data">
+ <paragraph internal:line="1" internal:source="test data">
+ Paragraph
+ <block_quote internal:line="3" internal:source="test data">
+ <paragraph internal:line="3" internal:source="test data">
+ Block quote in line 3
+ <attribution internal:line="5" internal:source="test data">
+ attribution in line 5
+ <block_quote internal:line="7" internal:source="test data">
+ <paragraph internal:line="7" internal:source="test data">
+ Second block quote in line 7
+ <attribution internal:line="9" internal:source="test data">
+ attribution in line 9
+ <paragraph internal:line="11" internal:source="test data">
+ Final paragraph in line 11
+"""],
])
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|