diff mbox series

[12/13] qapi/parser: don't parse rST markup as section headers

Message ID 20240619003012.1753577-13-jsnow@redhat.com (mailing list archive)
State New
Headers show
Series qapi: convert "Note" and "Example" sections to rST | expand

Commit Message

John Snow June 19, 2024, 12:30 a.m. UTC
The double-colon synax is rST formatting that precedes a literal code
block. We do not want to capture these as QAPI-specific sections.

Coerce blocks that start with e.g. "Example::" to be parsed as untagged
paragraphs instead of special tagged sections.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 scripts/qapi/parser.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Markus Armbruster June 19, 2024, 12:55 p.m. UTC | #1
John Snow <jsnow@redhat.com> writes:

> The double-colon synax is rST formatting that precedes a literal code
> block. We do not want to capture these as QAPI-specific sections.
>
> Coerce blocks that start with e.g. "Example::" to be parsed as untagged
> paragraphs instead of special tagged sections.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  scripts/qapi/parser.py | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
> index 53b06a94508..971fdf61a09 100644
> --- a/scripts/qapi/parser.py
> +++ b/scripts/qapi/parser.py
> @@ -545,10 +545,15 @@ def get_doc(self) -> 'QAPIDoc':
>                          line = self.get_doc_indented(doc)
>                      no_more_args = True
>                  elif match := re.match(
> -                        r'(Returns|Errors|Since|Notes?|Examples?|TODO): *',
> -                        line):
> +                        r'(Returns|Errors|Since|Notes?|Examples?|TODO)'
> +                        r'(?!::): *',
> +                        line,
> +                ):
>                      # tagged section
>  
> +                    # Note: "sections" with two colons are left alone as
> +                    # rST markup and not interpreted as a section heading.
> +
>                      # TODO: Remove this error sometime in 2025 or so
>                      # after we've fully transitioned to the new qapidoc
>                      # generator.

Patch looks good, but let's add a positive test to doc-good.json.
diff mbox series

Patch

diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 53b06a94508..971fdf61a09 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -545,10 +545,15 @@  def get_doc(self) -> 'QAPIDoc':
                         line = self.get_doc_indented(doc)
                     no_more_args = True
                 elif match := re.match(
-                        r'(Returns|Errors|Since|Notes?|Examples?|TODO): *',
-                        line):
+                        r'(Returns|Errors|Since|Notes?|Examples?|TODO)'
+                        r'(?!::): *',
+                        line,
+                ):
                     # tagged section
 
+                    # Note: "sections" with two colons are left alone as
+                    # rST markup and not interpreted as a section heading.
+
                     # TODO: Remove this error sometime in 2025 or so
                     # after we've fully transitioned to the new qapidoc
                     # generator.