[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 11/17] qapi: Fix argument description indentation stripping
From: |
Markus Armbruster |
Subject: |
[PATCH 11/17] qapi: Fix argument description indentation stripping |
Date: |
Fri, 28 Apr 2023 12:54:23 +0200 |
When an argument's description starts on the line after the "#arg: "
line, indentation is stripped only from the description's first line,
as demonstrated by the previous commit. Moreover, subsequent lines
with less indentation are not rejected.
Make the first line's indentation the expected indentation for the
remainder of the description. This fixes indentation stripping, and
also requires at least that much indentation.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
scripts/qapi/parser.py | 20 +++++++++++---------
tests/qapi-schema/doc-good.out | 2 +-
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 7b49d3ab05..ddc14ceaba 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -483,7 +483,9 @@ def append(self, line: str) -> None:
# Blank lines are always OK.
if line:
indent = must_match(r'\s*', line).end()
- if indent < self._indent:
+ if self._indent < 0:
+ self._indent = indent
+ elif indent < self._indent:
raise QAPIParseError(
self._parser,
"unexpected de-indent (expected at least %d spaces)" %
@@ -631,9 +633,9 @@ def _append_args_line(self, line: str) -> None:
indent = must_match(r'@\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "@arg:" header; following lines
- # are not indented
- indent = 0
+ # Line was just the "@arg:" header
+ # The next non-blank line determines expected indent
+ indent = -1
else:
line = ' ' * indent + line
self._start_args_section(name[1:-1], indent)
@@ -666,9 +668,9 @@ def _append_features_line(self, line: str) -> None:
indent = must_match(r'@\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "@arg:" header; following lines
- # are not indented
- indent = 0
+ # Line was just the "@arg:" header
+ # The next non-blank line determines expected indent
+ indent = -1
else:
line = ' ' * indent + line
self._start_features_section(name[1:-1], indent)
@@ -712,8 +714,8 @@ def _append_various_line(self, line: str) -> None:
indent = must_match(r'\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "Section:" header; following lines
- # are not indented
+ # Line was just the "Section:" header
+ # The next non-blank line determines expected indent
indent = 0
else:
line = ' ' * indent + line
diff --git a/tests/qapi-schema/doc-good.out b/tests/qapi-schema/doc-good.out
index 2ba72ae558..277371acc8 100644
--- a/tests/qapi-schema/doc-good.out
+++ b/tests/qapi-schema/doc-good.out
@@ -159,7 +159,7 @@ doc symbol=cmd
arg=arg1
description starts on a new line,
- indented
+indented
arg=arg2
the second argument
arg=arg3
--
2.39.2
- [PATCH 00/17] qapi: Reformat doc comments, Markus Armbruster, 2023/04/28
- [PATCH 07/17] qapi: Tidy up a slightly awkward TODO comment, Markus Armbruster, 2023/04/28
- [PATCH 04/17] meson: Fix to make QAPI generator output depend on main.py, Markus Armbruster, 2023/04/28
- [PATCH 02/17] docs/devel/qapi-code-gen: Turn FIXME admonitions into comments, Markus Armbruster, 2023/04/28
- [PATCH 11/17] qapi: Fix argument description indentation stripping,
Markus Armbruster <=
- [PATCH 08/17] qapi/dump: Indent bulleted lists consistently, Markus Armbruster, 2023/04/28
- [PATCH 14/17] qapi: Section parameter @indent is no longer used, drop, Markus Armbruster, 2023/04/28
- [PATCH 13/17] qapi: Relax doc string @name: description indentation rules, Markus Armbruster, 2023/04/28
- [PATCH 10/17] tests/qapi-schema/doc-good: Improve argument description tests, Markus Armbruster, 2023/04/28
- [PATCH 06/17] sphinx/qapidoc: Do not emit TODO sections into user manuals, Markus Armbruster, 2023/04/28