diff --git a/changelogs/fragments/370-fixes.yml b/changelogs/fragments/370-fixes.yml new file mode 100644 index 00000000..264938bd --- /dev/null +++ b/changelogs/fragments/370-fixes.yml @@ -0,0 +1,3 @@ +bugfixes: + - "Fix rendering of ``HORIZONTALLINE`` in reStructuredText output. An earlier fix for leading whitespace mangled the resulting ``raw`` directive + (https://github.com/ansible-community/antsibull-docs/pull/370)." diff --git a/src/antsibull_docs/jinja2/filters.py b/src/antsibull_docs/jinja2/filters.py index f9e76c22..e66dd34a 100644 --- a/src/antsibull_docs/jinja2/filters.py +++ b/src/antsibull_docs/jinja2/filters.py @@ -259,6 +259,17 @@ def column_width(string: str) -> int: return _column_width(string) +def _lstrip(line: str, lines: list[str], no: int) -> str: + if ( + no >= 2 + and lines[no - 2].startswith(".. raw:: ") + and lines[no - 1] == "" + and line.startswith(" ") + ): + return line + return line.lstrip() + + def rst_indent( value: str, width: t.Union[int, str], first: bool = False, blank: bool = False ) -> str: @@ -277,7 +288,7 @@ def rst_indent( lines = (value + "\n").splitlines() # Remove trailing whitespace - stripped_lines = [line.lstrip() for line in lines] + stripped_lines = [_lstrip(line, lines, no) for no, line in enumerate(lines)] if blank: rv = ("\n" + indent).join(stripped_lines) diff --git a/tests/functional/ansible-doc-cache-all-others.json b/tests/functional/ansible-doc-cache-all-others.json index 60e73bd1..17f01eac 100644 --- a/tests/functional/ansible-doc-cache-all-others.json +++ b/tests/functional/ansible-doc-cache-all-others.json @@ -23931,7 +23931,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -23940,7 +23942,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-all.json b/tests/functional/ansible-doc-cache-all.json index 987f3e03..9ce2b1a9 100644 --- a/tests/functional/ansible-doc-cache-all.json +++ b/tests/functional/ansible-doc-cache-all.json @@ -23848,7 +23848,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -23857,7 +23859,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-ansible.builtin-ns.col2-ns2.col.json b/tests/functional/ansible-doc-cache-ansible.builtin-ns.col2-ns2.col.json index 511b5b34..0ccd9b3d 100644 --- a/tests/functional/ansible-doc-cache-ansible.builtin-ns.col2-ns2.col.json +++ b/tests/functional/ansible-doc-cache-ansible.builtin-ns.col2-ns2.col.json @@ -23848,7 +23848,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -23857,7 +23859,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-ansible.builtin-ns2.col.json b/tests/functional/ansible-doc-cache-ansible.builtin-ns2.col.json index 6f41c56c..d3118ea1 100644 --- a/tests/functional/ansible-doc-cache-ansible.builtin-ns2.col.json +++ b/tests/functional/ansible-doc-cache-ansible.builtin-ns2.col.json @@ -23007,7 +23007,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -23016,7 +23018,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-ns.col1-ns.col2-ns2.col-ns2.flatcol.json b/tests/functional/ansible-doc-cache-ns.col1-ns.col2-ns2.col-ns2.flatcol.json index dbfac0e5..bded4325 100644 --- a/tests/functional/ansible-doc-cache-ns.col1-ns.col2-ns2.col-ns2.flatcol.json +++ b/tests/functional/ansible-doc-cache-ns.col1-ns.col2-ns2.col-ns2.flatcol.json @@ -2137,7 +2137,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -2146,7 +2148,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-ns.col1-ns2.col-ns2.flatcol.json b/tests/functional/ansible-doc-cache-ns.col1-ns2.col-ns2.flatcol.json index 1352d28b..64ef4c56 100644 --- a/tests/functional/ansible-doc-cache-ns.col1-ns2.col-ns2.flatcol.json +++ b/tests/functional/ansible-doc-cache-ns.col1-ns2.col-ns2.flatcol.json @@ -1296,7 +1296,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -1305,7 +1307,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/ansible-doc-cache-ns2.col.json b/tests/functional/ansible-doc-cache-ns2.col.json index c401f966..2cb62826 100644 --- a/tests/functional/ansible-doc-cache-ns2.col.json +++ b/tests/functional/ansible-doc-cache-ns2.col.json @@ -1296,7 +1296,9 @@ "description": [ "Foo bar.", "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.", - "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz)." + "Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz).", + "HORIZONTALLINE", + "Another line." ], "filename": "ansible_collections/ns2/col/plugins/modules/foo2.py", "has_action": false, @@ -1305,7 +1307,8 @@ "bar": { "description": [ "Some bar.", - "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." + "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.", + "Some text. HORIZONTALLINE More text." ], "type": "str" } diff --git a/tests/functional/baseline-default/collections/ns2/col/foo2_module.rst b/tests/functional/baseline-default/collections/ns2/col/foo2_module.rst index 6d7d21e4..658e1284 100644 --- a/tests/functional/baseline-default/collections/ns2/col/foo2_module.rst +++ b/tests/functional/baseline-default/collections/ns2/col/foo2_module.rst @@ -50,6 +50,10 @@ Synopsis - Foo bar. - 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. - Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`. +- .. raw:: html + +
+- Another line. .. Aliases @@ -110,6 +114,14 @@ Parameters 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. + Some text. + + .. raw:: html + +
+ + More text. + .. raw:: html diff --git a/tests/functional/baseline-no-breadcrumbs/collections/ns2/col/foo2_module.rst b/tests/functional/baseline-no-breadcrumbs/collections/ns2/col/foo2_module.rst index 6d7d21e4..658e1284 100644 --- a/tests/functional/baseline-no-breadcrumbs/collections/ns2/col/foo2_module.rst +++ b/tests/functional/baseline-no-breadcrumbs/collections/ns2/col/foo2_module.rst @@ -50,6 +50,10 @@ Synopsis - Foo bar. - 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. - Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`. +- .. raw:: html + +
+- Another line. .. Aliases @@ -110,6 +114,14 @@ Parameters 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. + Some text. + + .. raw:: html + +
+ + More text. + .. raw:: html diff --git a/tests/functional/baseline-no-indexes/collections/ns2/col/foo2_module.rst b/tests/functional/baseline-no-indexes/collections/ns2/col/foo2_module.rst index 801e8fa3..f0cc5996 100644 --- a/tests/functional/baseline-no-indexes/collections/ns2/col/foo2_module.rst +++ b/tests/functional/baseline-no-indexes/collections/ns2/col/foo2_module.rst @@ -47,6 +47,10 @@ Synopsis - Foo bar. - 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. - Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`. +- .. raw:: html + +
+- Another line. .. Aliases @@ -107,6 +111,14 @@ Parameters 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. + Some text. + + .. raw:: html + +
+ + More text. + .. raw:: html diff --git a/tests/functional/baseline-simplified-rst-squash-hierarchy/foo2_module.rst b/tests/functional/baseline-simplified-rst-squash-hierarchy/foo2_module.rst index ff4e6414..9f7647a4 100644 --- a/tests/functional/baseline-simplified-rst-squash-hierarchy/foo2_module.rst +++ b/tests/functional/baseline-simplified-rst-squash-hierarchy/foo2_module.rst @@ -24,6 +24,8 @@ Synopsis - Foo bar. - See :literal:`foo\_param\_1` (of role `ns2.col.foo `__, entrypoint main) for a random role parameter reference. And :literal:`foo\_param\_2=42` (of role `ns2.col.foo `__, entrypoint main) for one with a value. - Reference using alias - :literal:`bar` (of module `ns2.col.foo\_redirect `__) and :literal:`baz` (of module `ns2.col.foo\_redirect `__). +- ------------ +- Another line. Aliases: foo_3_redirect, foo_4_redirect, foo_5_redirect @@ -58,6 +60,7 @@ Parameters

Some bar.

See foo_param_1 for a random role parameter reference. And foo_param_2=42 for one with a value.

+

Some text.


More text.

diff --git a/tests/functional/baseline-simplified-rst/collections/ns2/col/foo2_module.rst b/tests/functional/baseline-simplified-rst/collections/ns2/col/foo2_module.rst index 461f528e..0273dc6f 100644 --- a/tests/functional/baseline-simplified-rst/collections/ns2/col/foo2_module.rst +++ b/tests/functional/baseline-simplified-rst/collections/ns2/col/foo2_module.rst @@ -24,6 +24,8 @@ Synopsis - Foo bar. - See :literal:`foo\_param\_1` (of role `ns2.col.foo `__, entrypoint main) for a random role parameter reference. And :literal:`foo\_param\_2=42` (of role `ns2.col.foo `__, entrypoint main) for one with a value. - Reference using alias - :literal:`bar` (of module `ns2.col.foo\_redirect `__) and :literal:`baz` (of module `ns2.col.foo\_redirect `__). +- ------------ +- Another line. Aliases: foo_3_redirect, foo_4_redirect, foo_5_redirect @@ -58,6 +60,7 @@ Parameters

Some bar.

See foo_param_1 for a random role parameter reference. And foo_param_2=42 for one with a value.

+

Some text.


More text.

diff --git a/tests/functional/baseline-squash-hierarchy/foo2_module.rst b/tests/functional/baseline-squash-hierarchy/foo2_module.rst index 6d7d21e4..658e1284 100644 --- a/tests/functional/baseline-squash-hierarchy/foo2_module.rst +++ b/tests/functional/baseline-squash-hierarchy/foo2_module.rst @@ -50,6 +50,10 @@ Synopsis - Foo bar. - 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. - Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`. +- .. raw:: html + +
+- Another line. .. Aliases @@ -110,6 +114,14 @@ Parameters 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. + Some text. + + .. raw:: html + +
+ + More text. + .. raw:: html diff --git a/tests/functional/baseline-use-html-blobs/collections/ns2/col/foo2_module.rst b/tests/functional/baseline-use-html-blobs/collections/ns2/col/foo2_module.rst index b694aca5..e6e8869a 100644 --- a/tests/functional/baseline-use-html-blobs/collections/ns2/col/foo2_module.rst +++ b/tests/functional/baseline-use-html-blobs/collections/ns2/col/foo2_module.rst @@ -50,6 +50,10 @@ Synopsis - Foo bar. - 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. - Reference using alias - :ansopt:`ns2.col.foo\_redirect#module:bar` and :ansopt:`ns2.col.foo\_redirect#module:baz`. +- .. raw:: html + +
+- Another line. .. Aliases @@ -90,6 +94,7 @@ Parameters

Some bar.

See foo_param_1 for a random role parameter reference. And foo_param_2=42 for one with a value.

+

Some text.


More text.

diff --git a/tests/functional/collections/ansible_collections/ns2/col/plugins/modules/foo2.py b/tests/functional/collections/ansible_collections/ns2/col/plugins/modules/foo2.py index eea123a0..bed6c443 100644 --- a/tests/functional/collections/ansible_collections/ns2/col/plugins/modules/foo2.py +++ b/tests/functional/collections/ansible_collections/ns2/col/plugins/modules/foo2.py @@ -19,12 +19,15 @@ - 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. - Reference using alias - O(ns2.col.foo_redirect#module:bar) and O(ns2.col.foo_redirect#module:baz). + - HORIZONTALLINE + - Another line. options: bar: description: - Some bar. - 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. + - Some text. HORIZONTALLINE More text. type: str attributes: