mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-29 05:13:54 -06:00
docs/qapidoc: add preamble() method
This method adds the options/preamble to each definition block. Notably, :since: and :ifcond: are added, as are any "special features" such as :deprecated: and :unstable:. If conditionals, if attached to special features, are currently unhandled in this patch and will be addressed at a future date. We currently do not have any if conditionals attached to special features. Signed-off-by: John Snow <jsnow@redhat.com> Message-ID: <20250311034303.75779-44-jsnow@redhat.com> Acked-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
f0b2fe99f6
commit
803df114fd
1 changed files with 38 additions and 3 deletions
|
@ -37,7 +37,12 @@ from docutils import nodes
|
||||||
from docutils.parsers.rst import Directive, directives
|
from docutils.parsers.rst import Directive, directives
|
||||||
from docutils.statemachine import StringList
|
from docutils.statemachine import StringList
|
||||||
from qapi.error import QAPIError
|
from qapi.error import QAPIError
|
||||||
from qapi.schema import QAPISchema, QAPISchemaVisitor
|
from qapi.parser import QAPIDoc
|
||||||
|
from qapi.schema import (
|
||||||
|
QAPISchema,
|
||||||
|
QAPISchemaDefinition,
|
||||||
|
QAPISchemaVisitor,
|
||||||
|
)
|
||||||
from qapi.source import QAPISourceInfo
|
from qapi.source import QAPISourceInfo
|
||||||
|
|
||||||
from qapidoc_legacy import QAPISchemaGenRSTVisitor # type: ignore
|
from qapidoc_legacy import QAPISchemaGenRSTVisitor # type: ignore
|
||||||
|
@ -56,8 +61,6 @@ if TYPE_CHECKING:
|
||||||
Sequence,
|
Sequence,
|
||||||
)
|
)
|
||||||
|
|
||||||
from qapi.parser import QAPIDoc
|
|
||||||
|
|
||||||
from sphinx.application import Sphinx
|
from sphinx.application import Sphinx
|
||||||
from sphinx.util.typing import ExtensionMetadata
|
from sphinx.util.typing import ExtensionMetadata
|
||||||
|
|
||||||
|
@ -125,6 +128,38 @@ class Transmogrifier:
|
||||||
# +2: correct for zero/one index, then increment by one.
|
# +2: correct for zero/one index, then increment by one.
|
||||||
self.add_line_raw("", fname, line + 2)
|
self.add_line_raw("", fname, line + 2)
|
||||||
|
|
||||||
|
# Transmogrification helpers
|
||||||
|
|
||||||
|
def preamble(self, ent: QAPISchemaDefinition) -> None:
|
||||||
|
"""
|
||||||
|
Generate option lines for QAPI entity directives.
|
||||||
|
"""
|
||||||
|
if ent.doc and ent.doc.since:
|
||||||
|
assert ent.doc.since.kind == QAPIDoc.Kind.SINCE
|
||||||
|
# Generated from the entity's docblock; info location is exact.
|
||||||
|
self.add_line(f":since: {ent.doc.since.text}", ent.doc.since.info)
|
||||||
|
|
||||||
|
if ent.ifcond.is_present():
|
||||||
|
doc = ent.ifcond.docgen()
|
||||||
|
assert ent.info
|
||||||
|
# Generated from entity definition; info location is approximate.
|
||||||
|
self.add_line(f":ifcond: {doc}", ent.info)
|
||||||
|
|
||||||
|
# Hoist special features such as :deprecated: and :unstable:
|
||||||
|
# into the options block for the entity. If, in the future, new
|
||||||
|
# special features are added, qapi-domain will chirp about
|
||||||
|
# unrecognized options and fail until they are handled in
|
||||||
|
# qapi-domain.
|
||||||
|
for feat in ent.features:
|
||||||
|
if feat.is_special():
|
||||||
|
# FIXME: handle ifcond if present. How to display that
|
||||||
|
# information is TBD.
|
||||||
|
# Generated from entity def; info location is approximate.
|
||||||
|
assert feat.info
|
||||||
|
self.add_line(f":{feat.name}:", feat.info)
|
||||||
|
|
||||||
|
self.ensure_blank_line()
|
||||||
|
|
||||||
# Transmogrification core methods
|
# Transmogrification core methods
|
||||||
|
|
||||||
def visit_module(self, path: str) -> None:
|
def visit_module(self, path: str) -> None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue