[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 06/13] docs/qapidoc: fix nested parsing under untagged sectio
From: |
Markus Armbruster |
Subject: |
Re: [PATCH 06/13] docs/qapidoc: fix nested parsing under untagged sections |
Date: |
Wed, 19 Jun 2024 14:05:56 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
John Snow <jsnow@redhat.com> writes:
> Sphinx does not like sections without titles, because it wants to
> convert every section into a reference. When there is no title, it
> struggles to do this and transforms the tree inproperly.
>
> Depending on the rST used, this may result in an assertion error deep in
> the docutils HTMLWriter.
>
> (Observed when using ".. admonition:: Notes" under such a section - When
> this is transformed with its own <title> element, Sphinx is fooled into
> believing this title belongs to the section and incorrect mutates the
> docutils tree, leading to errors during rendering time.)
>
> When parsing an untagged section (free paragraphs), skip making a hollow
> section and instead append the parse results to the prior section.
>
> Many Bothans died to bring us this information.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> docs/sphinx/qapidoc.py | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
> index f2f2005dd5f..66cf254a624 100644
> --- a/docs/sphinx/qapidoc.py
> +++ b/docs/sphinx/qapidoc.py
> @@ -286,14 +286,20 @@ def _nodes_for_sections(self, doc):
> if section.tag and section.tag == 'TODO':
> # Hide TODO: sections
> continue
> +
> + if not section.tag:
> + # Sphinx cannot handle sectionless titles;
> + # Instead, just append the results to the prior section.
> + container = nodes.container()
> + self._parse_text_into_node(section.text, container)
> + nodelist += container.children
> + continue
> +
> snode = self._make_section(section.tag)
> - if section.tag and section.tag.startswith('Example'):
> + if section.tag.startswith('Example'):
> snode += self._nodes_for_example(dedent(section.text))
> else:
> - self._parse_text_into_node(
> - dedent(section.text) if section.tag else section.text,
> - snode,
> - )
> + self._parse_text_into_node(dedent(section.text), snode)
> nodelist.append(snode)
> return nodelist
Acked-by: Markus Armbruster <armbru@redhat.com>
- Re: [PATCH 03/13] docs/qapidoc: delint a tiny portion of the module, (continued)
[PATCH 05/13] qapi/parser: fix comment parsing immediately following a doc block, John Snow, 2024/06/18
[PATCH 06/13] docs/qapidoc: fix nested parsing under untagged sections, John Snow, 2024/06/18
- Re: [PATCH 06/13] docs/qapidoc: fix nested parsing under untagged sections,
Markus Armbruster <=
[PATCH 07/13] qapi: fix non-compliant JSON examples, John Snow, 2024/06/18
[PATCH 08/13] qapi: ensure all errors sections are uniformly typset, John Snow, 2024/06/18
[PATCH 10/13] qapi: update prose in note blocks, John Snow, 2024/06/18
[PATCH 09/13] qapi: convert "Note" sections to plain rST, John Snow, 2024/06/18