[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 19/23] docs/qapidoc: add visit_member() method
From: |
John Snow |
Subject: |
[PATCH v2 19/23] docs/qapidoc: add visit_member() method |
Date: |
Tue, 14 Jan 2025 13:58:36 -0500 |
This method is used for generating the "members" of a wide variety of
things, including structs, unions, enums, alternates, etc. The field
name it uses to do so is dependent on the type of entity the "member"
belongs to.
Signed-off-by: John Snow <jsnow@redhat.com>
---
docs/sphinx/qapidoc.py | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/docs/sphinx/qapidoc.py b/docs/sphinx/qapidoc.py
index cbc62eb5084..5f00615ae32 100644
--- a/docs/sphinx/qapidoc.py
+++ b/docs/sphinx/qapidoc.py
@@ -74,6 +74,16 @@ def dedent(text: str) -> str:
class Transmogrifier:
+ # Field names used for different entity types:
+ field_types = {
+ "enum": "value",
+ "struct": "memb",
+ "union": "memb",
+ "event": "memb",
+ "command": "arg",
+ "alternate": "choice",
+ }
+
def __init__(self, schema):
self._curr_ent = None
self._result = StringList()
@@ -84,6 +94,10 @@ def entity(self) -> QAPISchemaEntity:
assert self._curr_ent is not None
return self._curr_ent
+ @property
+ def member_field_type(self) -> str:
+ return self.field_types[self.entity.meta]
+
# General-purpose rST generation functions
def get_indent(self) -> str:
@@ -194,6 +208,19 @@ def visit_paragraph(self, section: QAPIDoc.Section) ->
None:
self.add_lines(section.text, section.info)
self.ensure_blank_line()
+ def visit_member(self, section: QAPIDoc.ArgSection) -> None:
+ # TODO: ifcond for members
+ # TODO?: features for members (documented at entity-level,
+ # but sometimes defined per-member. Should we add such
+ # information to member descriptions when we can?)
+ assert section.text
+ self.generate_field(
+ self.member_field_type,
+ section.member,
+ section.text,
+ section.info,
+ )
+
def visit_feature(self, section: QAPIDoc.ArgSection) -> None:
# FIXME - ifcond for features is not handled at all yet!
# Proposal: decorate the right-hand column with some graphical
--
2.47.1
- [PATCH v2 01/23] docs/qapidoc: support header-less freeform sections, (continued)
- [PATCH v2 01/23] docs/qapidoc: support header-less freeform sections, John Snow, 2025/01/14
- [PATCH v2 08/23] docs/qapidoc: add visit_module() method, John Snow, 2025/01/14
- [PATCH v2 02/23] qapi/parser: adjust info location for doc body section, John Snow, 2025/01/14
- [PATCH v2 13/23] docs/qapidoc: add visit_errors() method, John Snow, 2025/01/14
- [PATCH v2 15/23] docs/qapidoc: add add_field() and generate_field() helper methods, John Snow, 2025/01/14
- [PATCH v2 14/23] docs/qapidoc: add format_type() method, John Snow, 2025/01/14
- [PATCH v2 06/23] docs/qapidoc: add transmogrifier stub, John Snow, 2025/01/14
- [PATCH v2 04/23] qapi: expand tags to all doc sections, John Snow, 2025/01/14
- [PATCH v2 09/23] qapi/source: allow multi-line QAPISourceInfo advancing, John Snow, 2025/01/14
- [PATCH v2 11/23] docs/qapidoc: add preamble() method, John Snow, 2025/01/14
- [PATCH v2 19/23] docs/qapidoc: add visit_member() method,
John Snow <=
- [PATCH v2 05/23] qapi/schema: add __repr__ to QAPIDoc.Section, John Snow, 2025/01/14
- [PATCH v2 12/23] docs/qapidoc: add visit_paragraph() method, John Snow, 2025/01/14
- [PATCH v2 17/23] docs/qapidoc: prepare to record entity being transmogrified, John Snow, 2025/01/14
- [PATCH v2 22/23] docs/qapidoc: implement transmogrify() method, John Snow, 2025/01/14
- [PATCH v2 03/23] docs/qapidoc: remove example section support, John Snow, 2025/01/14
- [PATCH v2 07/23] docs/qapidoc: add transmogrifier class stub, John Snow, 2025/01/14
- [PATCH v2 10/23] docs/qapidoc: add visit_freeform() method, John Snow, 2025/01/14
- [PATCH v2 18/23] docs/qapidoc: add visit_returns() method, John Snow, 2025/01/14
- [PATCH v2 20/23] docs/qapidoc: add visit_sections() method, John Snow, 2025/01/14
- [PATCH v2 16/23] docs/qapidoc: add visit_feature() method, John Snow, 2025/01/14