[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 07/20] qapi/parser: add semantic 'kind' parameter to QAPIDoc.Sect
From: |
John Snow |
Subject: |
[PATCH 07/20] qapi/parser: add semantic 'kind' parameter to QAPIDoc.Section |
Date: |
Tue, 14 May 2024 17:57:26 -0400 |
When iterating all_sections, this is helpful to be able to distinguish
"members" from "features"; the only other way to do so is to
cross-reference these sections against QAPIDoc.args or QAPIDoc.features,
but if the desired end goal for QAPIDoc is to remove everything except
all_sections, we need *something* accessible to distinguish them.
To keep types simple, add this semantic parameter to the base Section
and not just ArgSection; we can use this to filter out paragraphs and
tagged sections, too.
Signed-off-by: John Snow <jsnow@redhat.com>
---
scripts/qapi/parser.py | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 161768b8b96..cf4cbca1c1f 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -613,21 +613,27 @@ class QAPIDoc:
class Section:
# pylint: disable=too-few-public-methods
- def __init__(self, info: QAPISourceInfo,
- tag: Optional[str] = None):
+ def __init__(
+ self,
+ info: QAPISourceInfo,
+ tag: Optional[str] = None,
+ kind: str = 'paragraph',
+ ):
# section source info, i.e. where it begins
self.info = info
# section tag, if any ('Returns', '@name', ...)
self.tag = tag
# section text without tag
self.text = ''
+ # section type - {paragraph, feature, member, tagged}
+ self.kind = kind
def append_line(self, line: str) -> None:
self.text += line + '\n'
class ArgSection(Section):
- def __init__(self, info: QAPISourceInfo, tag: str):
- super().__init__(info, tag)
+ def __init__(self, info: QAPISourceInfo, tag: str, kind: str):
+ super().__init__(info, tag, kind)
self.member: Optional['QAPISchemaMember'] = None
def connect(self, member: 'QAPISchemaMember') -> None:
@@ -676,7 +682,7 @@ def ensure_untagged_section(self, info: QAPISourceInfo) ->
None:
self.all_sections.append(section)
def new_tagged_section(self, info: QAPISourceInfo, tag: str) -> None:
- section = self.Section(info, tag)
+ section = self.Section(info, tag, "tagged")
if tag == 'Returns':
if self.returns:
raise QAPISemError(
@@ -696,20 +702,21 @@ def new_tagged_section(self, info: QAPISourceInfo, tag:
str) -> None:
self.all_sections.append(section)
def _new_description(self, info: QAPISourceInfo, name: str,
+ kind: str,
desc: Dict[str, ArgSection]) -> None:
if not name:
raise QAPISemError(info, "invalid parameter name")
if name in desc:
raise QAPISemError(info, "'%s' parameter name duplicated" % name)
- section = self.ArgSection(info, '@' + name)
+ section = self.ArgSection(info, '@' + name, kind)
self.all_sections.append(section)
desc[name] = section
def new_argument(self, info: QAPISourceInfo, name: str) -> None:
- self._new_description(info, name, self.args)
+ self._new_description(info, name, 'member', self.args)
def new_feature(self, info: QAPISourceInfo, name: str) -> None:
- self._new_description(info, name, self.features)
+ self._new_description(info, name, 'feature', self.features)
def append_line(self, line: str) -> None:
self.all_sections[-1].append_line(line)
@@ -722,7 +729,7 @@ def connect_member(self, member: 'QAPISchemaMember') ->
None:
"%s '%s' lacks documentation"
% (member.role, member.name))
self.args[member.name] = QAPIDoc.ArgSection(
- self.info, '@' + member.name)
+ self.info, '@' + member.name, 'member')
self.args[member.name].connect(member)
def connect_feature(self, feature: 'QAPISchemaFeature') -> None:
--
2.44.0
- Re: [PATCH 03/20] docs/qapidoc: delint a tiny portion of the module, (continued)
[PATCH 01/20] [DO-NOT-MERGE]: Add some ad-hoc linting helpers., John Snow, 2024/05/14
[PATCH 06/20] qapi/parser: fix comment parsing immediately following a doc block, John Snow, 2024/05/14
[PATCH 07/20] qapi/parser: add semantic 'kind' parameter to QAPIDoc.Section,
John Snow <=
[PATCH 10/20] qapi/schema: add __iter__ method to QAPISchemaVariants, John Snow, 2024/05/14
[PATCH 08/20] qapi/parser: differentiate intro and outro paragraphs, John Snow, 2024/05/14
[PATCH 09/20] qapi/parser: add undocumented stub members to all_sections, John Snow, 2024/05/14
[PATCH 13/20] docs/qapidoc: fix nested parsing under untagged sections, John Snow, 2024/05/14
[PATCH 05/20] qapi/parser: adjust info location for doc body section, John Snow, 2024/05/14