Skip to content

Commit 84d56f8

Browse files
authored
Fix RST rendering for HORIZONTALLINE (#370)
* Add HORIZONTALLINE test with current output. * Fix '.. raw::' indent. * Lint.
1 parent 55ba46f commit 84d56f8

File tree

17 files changed

+112
-15
lines changed

17 files changed

+112
-15
lines changed

changelogs/fragments/370-fixes.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
bugfixes:
2+
- "Fix rendering of ``HORIZONTALLINE`` in reStructuredText output. An earlier fix for leading whitespace mangled the resulting ``raw`` directive
3+
(https://github.com/ansible-community/antsibull-docs/pull/370)."

src/antsibull_docs/jinja2/filters.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,17 @@ def column_width(string: str) -> int:
259259
return _column_width(string)
260260

261261

262+
def _lstrip(line: str, lines: list[str], no: int) -> str:
263+
if (
264+
no >= 2
265+
and lines[no - 2].startswith(".. raw:: ")
266+
and lines[no - 1] == ""
267+
and line.startswith(" ")
268+
):
269+
return line
270+
return line.lstrip()
271+
272+
262273
def rst_indent(
263274
value: str, width: t.Union[int, str], first: bool = False, blank: bool = False
264275
) -> str:
@@ -277,7 +288,7 @@ def rst_indent(
277288
lines = (value + "\n").splitlines()
278289

279290
# Remove trailing whitespace
280-
stripped_lines = [line.lstrip() for line in lines]
291+
stripped_lines = [_lstrip(line, lines, no) for no, line in enumerate(lines)]
281292

282293
if blank:
283294
rv = ("\n" + indent).join(stripped_lines)

tests/functional/ansible-doc-cache-all-others.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23931,7 +23931,9 @@
2393123931
"description": [
2393223932
"Foo bar.",
2393323933
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23934-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
23934+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
23935+
"HORIZONTALLINE",
23936+
"Another line."
2393523937
],
2393623938
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
2393723939
"has_action": false,
@@ -23940,7 +23942,8 @@
2394023942
"bar": {
2394123943
"description": [
2394223944
"Some bar.",
23943-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
23945+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23946+
"Some text. HORIZONTALLINE More text."
2394423947
],
2394523948
"type": "str"
2394623949
}

tests/functional/ansible-doc-cache-all.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23848,7 +23848,9 @@
2384823848
"description": [
2384923849
"Foo bar.",
2385023850
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23851-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
23851+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
23852+
"HORIZONTALLINE",
23853+
"Another line."
2385223854
],
2385323855
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
2385423856
"has_action": false,
@@ -23857,7 +23859,8 @@
2385723859
"bar": {
2385823860
"description": [
2385923861
"Some bar.",
23860-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
23862+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23863+
"Some text. HORIZONTALLINE More text."
2386123864
],
2386223865
"type": "str"
2386323866
}

tests/functional/ansible-doc-cache-ansible.builtin-ns.col2-ns2.col.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23848,7 +23848,9 @@
2384823848
"description": [
2384923849
"Foo bar.",
2385023850
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23851-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
23851+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
23852+
"HORIZONTALLINE",
23853+
"Another line."
2385223854
],
2385323855
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
2385423856
"has_action": false,
@@ -23857,7 +23859,8 @@
2385723859
"bar": {
2385823860
"description": [
2385923861
"Some bar.",
23860-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
23862+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23863+
"Some text. HORIZONTALLINE More text."
2386123864
],
2386223865
"type": "str"
2386323866
}

tests/functional/ansible-doc-cache-ansible.builtin-ns2.col.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23007,7 +23007,9 @@
2300723007
"description": [
2300823008
"Foo bar.",
2300923009
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23010-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
23010+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
23011+
"HORIZONTALLINE",
23012+
"Another line."
2301123013
],
2301223014
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
2301323015
"has_action": false,
@@ -23016,7 +23018,8 @@
2301623018
"bar": {
2301723019
"description": [
2301823020
"Some bar.",
23019-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
23021+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
23022+
"Some text. HORIZONTALLINE More text."
2302023023
],
2302123024
"type": "str"
2302223025
}

tests/functional/ansible-doc-cache-ns.col1-ns.col2-ns2.col-ns2.flatcol.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2137,7 +2137,9 @@
21372137
"description": [
21382138
"Foo bar.",
21392139
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
2140-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
2140+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
2141+
"HORIZONTALLINE",
2142+
"Another line."
21412143
],
21422144
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
21432145
"has_action": false,
@@ -2146,7 +2148,8 @@
21462148
"bar": {
21472149
"description": [
21482150
"Some bar.",
2149-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
2151+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
2152+
"Some text. HORIZONTALLINE More text."
21502153
],
21512154
"type": "str"
21522155
}

tests/functional/ansible-doc-cache-ns.col1-ns2.col-ns2.flatcol.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,7 +1296,9 @@
12961296
"description": [
12971297
"Foo bar.",
12981298
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
1299-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
1299+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
1300+
"HORIZONTALLINE",
1301+
"Another line."
13001302
],
13011303
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
13021304
"has_action": false,
@@ -1305,7 +1307,8 @@
13051307
"bar": {
13061308
"description": [
13071309
"Some bar.",
1308-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
1310+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
1311+
"Some text. HORIZONTALLINE More text."
13091312
],
13101313
"type": "str"
13111314
}

tests/functional/ansible-doc-cache-ns2.col.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,7 +1296,9 @@
12961296
"description": [
12971297
"Foo bar.",
12981298
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
1299-
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)."
1299+
"Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).",
1300+
"HORIZONTALLINE",
1301+
"Another line."
13001302
],
13011303
"filename": "ansible_collections/ns2/col/plugins/modules/foo2.py",
13021304
"has_action": false,
@@ -1305,7 +1307,8 @@
13051307
"bar": {
13061308
"description": [
13071309
"Some bar.",
1308-
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value."
1310+
"See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.",
1311+
"Some text. HORIZONTALLINE More text."
13091312
],
13101313
"type": "str"
13111314
}

tests/functional/baseline-default/collections/ns2/col/foo2_module.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Synopsis
5050
- Foo bar.
5151
- See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
5252
- Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`.
53+
- .. raw:: html
54+
55+
<hr>
56+
- Another line.
5357

5458

5559
.. Aliases
@@ -110,6 +114,14 @@ Parameters
110114

111115
See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
112116

117+
Some text.
118+
119+
.. raw:: html
120+
121+
<hr>
122+
123+
More text.
124+
113125

114126
.. raw:: html
115127

tests/functional/baseline-no-breadcrumbs/collections/ns2/col/foo2_module.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Synopsis
5050
- Foo bar.
5151
- See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
5252
- Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`.
53+
- .. raw:: html
54+
55+
<hr>
56+
- Another line.
5357

5458

5559
.. Aliases
@@ -110,6 +114,14 @@ Parameters
110114

111115
See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
112116

117+
Some text.
118+
119+
.. raw:: html
120+
121+
<hr>
122+
123+
More text.
124+
113125

114126
.. raw:: html
115127

tests/functional/baseline-no-indexes/collections/ns2/col/foo2_module.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ Synopsis
4747
- Foo bar.
4848
- See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
4949
- Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`.
50+
- .. raw:: html
51+
52+
<hr>
53+
- Another line.
5054

5155

5256
.. Aliases
@@ -107,6 +111,14 @@ Parameters
107111

108112
See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
109113

114+
Some text.
115+
116+
.. raw:: html
117+
118+
<hr>
119+
120+
More text.
121+
110122

111123
.. raw:: html
112124

tests/functional/baseline-simplified-rst-squash-hierarchy/foo2_module.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Synopsis
2424
- Foo bar.
2525
- See :literal:`foo\_param\_1` (of role `ns2.col.foo <foo_role.rst>`__, entrypoint main) for a random role parameter reference. And :literal:`foo\_param\_2=42` (of role `ns2.col.foo <foo_role.rst>`__, entrypoint main) for one with a value.
2626
- Reference using alias - :literal:`bar` (of module `ns2.col.foo\_redirect <foo_redirect_module.rst>`__) and :literal:`baz` (of module `ns2.col.foo\_redirect <foo_redirect_module.rst>`__).
27+
- ------------
28+
- Another line.
2729

2830

2931
Aliases: foo_3_redirect, foo_4_redirect, foo_5_redirect
@@ -58,6 +60,7 @@ Parameters
5860
<td valign="top">
5961
<p>Some bar.</p>
6062
<p>See <code class="ansible-option literal notranslate"><strong><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_1"><span class="std std-ref"><span class="pre">foo_param_1</span></span></a></strong></code> for a random role parameter reference. And <code class="ansible-option-value literal notranslate"><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_2"><span class="std std-ref"><span class="pre">foo_param_2=42</span></span></a></code> for one with a value.</p>
63+
<p>Some text.<hr/>More text.</p>
6164
</td>
6265
</tr>
6366
</tbody>

tests/functional/baseline-simplified-rst/collections/ns2/col/foo2_module.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Synopsis
2424
- Foo bar.
2525
- See :literal:`foo\_param\_1` (of role `ns2.col.foo <foo_role.rst>`__, entrypoint main) for a random role parameter reference. And :literal:`foo\_param\_2=42` (of role `ns2.col.foo <foo_role.rst>`__, entrypoint main) for one with a value.
2626
- Reference using alias - :literal:`bar` (of module `ns2.col.foo\_redirect <foo_redirect_module.rst>`__) and :literal:`baz` (of module `ns2.col.foo\_redirect <foo_redirect_module.rst>`__).
27+
- ------------
28+
- Another line.
2729

2830

2931
Aliases: foo_3_redirect, foo_4_redirect, foo_5_redirect
@@ -58,6 +60,7 @@ Parameters
5860
<td valign="top">
5961
<p>Some bar.</p>
6062
<p>See <code class="ansible-option literal notranslate"><strong><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_1"><span class="std std-ref"><span class="pre">foo_param_1</span></span></a></strong></code> for a random role parameter reference. And <code class="ansible-option-value literal notranslate"><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_2"><span class="std std-ref"><span class="pre">foo_param_2=42</span></span></a></code> for one with a value.</p>
63+
<p>Some text.<hr/>More text.</p>
6164
</td>
6265
</tr>
6366
</tbody>

tests/functional/baseline-squash-hierarchy/foo2_module.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Synopsis
5050
- Foo bar.
5151
- See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
5252
- Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`.
53+
- .. raw:: html
54+
55+
<hr>
56+
- Another line.
5357

5458

5559
.. Aliases
@@ -110,6 +114,14 @@ Parameters
110114

111115
See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
112116

117+
Some text.
118+
119+
.. raw:: html
120+
121+
<hr>
122+
123+
More text.
124+
113125

114126
.. raw:: html
115127

tests/functional/baseline-use-html-blobs/collections/ns2/col/foo2_module.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ Synopsis
5050
- Foo bar.
5151
- See :ansopt:`ns2.col.foo#role:main:foo\_param\_1` for a random role parameter reference. And :ansopt:`ns2.col.foo#role:main:foo\_param\_2=42` for one with a value.
5252
- Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`.
53+
- .. raw:: html
54+
55+
<hr>
56+
- Another line.
5357

5458

5559
.. Aliases
@@ -90,6 +94,7 @@ Parameters
9094
<td><div class="ansible-option-cell">
9195
<p>Some bar.</p>
9296
<p>See <code class="ansible-option literal notranslate"><strong><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_1"><span class="std std-ref"><span class="pre">foo_param_1</span></span></a></strong></code> for a random role parameter reference. And <code class="ansible-option-value literal notranslate"><a class="reference internal" href="../../ns2/col/foo_role.html#parameter-main--foo_param_2"><span class="std std-ref"><span class="pre">foo_param_2=42</span></span></a></code> for one with a value.</p>
97+
<p>Some text.<hr/>More text.</p>
9398
</div></td>
9499
</tr>
95100
</tbody>

tests/functional/collections/ansible_collections/ns2/col/plugins/modules/foo2.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@
1919
- See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And
2020
O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.
2121
- Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).
22+
- HORIZONTALLINE
23+
- Another line.
2224
options:
2325
bar:
2426
description:
2527
- Some bar.
2628
- See O(ns2.col.foo#role:main:foo_param_1) for a random role parameter reference. And
2729
O(ns2.col.foo#role:main:foo_param_2=42) for one with a value.
30+
- Some text. HORIZONTALLINE More text.
2831
type: str
2932
3033
attributes:

0 commit comments

Comments
 (0)