docs/qapidoc: factor out do_parse()

Factor out the compatibility parser helper into a base class, so it can
be shared by other directives.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240717021312.606116-3-jsnow@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
John Snow 2024-07-16 22:13:04 -04:00 committed by Markus Armbruster
parent 29a9efb09f
commit a7d07ccd20

View File

@ -481,7 +481,25 @@ class QAPISchemaGenDepVisitor(QAPISchemaVisitor):
super().visit_module(name)
class QAPIDocDirective(Directive):
class NestedDirective(Directive):
def run(self):
raise NotImplementedError
def do_parse(self, rstlist, node):
"""
Parse rST source lines and add them to the specified node
Take the list of rST source lines rstlist, parse them as
rST, and add the resulting docutils nodes as children of node.
The nodes are parsed in a way that allows them to include
subheadings (titles) without confusing the rendering of
anything else.
"""
with switch_source_input(self.state, rstlist):
nested_parse_with_titles(self.state, rstlist, node)
class QAPIDocDirective(NestedDirective):
"""Extract documentation from the specified QAPI .json file"""
required_argument = 1
@ -519,18 +537,6 @@ class QAPIDocDirective(Directive):
# so they are displayed nicely to the user
raise ExtensionError(str(err)) from err
def do_parse(self, rstlist, node):
"""Parse rST source lines and add them to the specified node
Take the list of rST source lines rstlist, parse them as
rST, and add the resulting docutils nodes as children of node.
The nodes are parsed in a way that allows them to include
subheadings (titles) without confusing the rendering of
anything else.
"""
with switch_source_input(self.state, rstlist):
nested_parse_with_titles(self.state, rstlist, node)
def setup(app):
"""Register qapi-doc directive with Sphinx"""