qapi: Make section headings start a new doc comment block
Our current QAPI doc-comment markup allows section headers (introduced with a leading '=' or '==') anywhere in a free-form documentation comment. This works for Texinfo because the generator simply prints a Texinfo section command at that point in the output stream. For rST generation, since we're assembling a tree of docutils nodes, this is awkward because a new section implies starting a new section node at the top level of the tree and generating text into there. Make section headers start a new free-form documentation block, so the future rST document generator doesn't have to look at every line in free-form blocks and handle headings in odd places. This change makes no difference to the generated Texinfo. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200320091805.5585-3-armbru@redhat.com>
This commit is contained in:
parent
d98884b75d
commit
dcdc07a97c
@ -52,8 +52,8 @@ class QAPISchemaParser:
|
|||||||
info = self.info
|
info = self.info
|
||||||
if self.tok == '#':
|
if self.tok == '#':
|
||||||
self.reject_expr_doc(cur_doc)
|
self.reject_expr_doc(cur_doc)
|
||||||
cur_doc = self.get_doc(info)
|
for cur_doc in self.get_doc(info):
|
||||||
self.docs.append(cur_doc)
|
self.docs.append(cur_doc)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
expr = self.get_expr(False)
|
expr = self.get_expr(False)
|
||||||
@ -270,7 +270,8 @@ class QAPISchemaParser:
|
|||||||
raise QAPIParseError(
|
raise QAPIParseError(
|
||||||
self, "junk after '##' at start of documentation comment")
|
self, "junk after '##' at start of documentation comment")
|
||||||
|
|
||||||
doc = QAPIDoc(self, info)
|
docs = []
|
||||||
|
cur_doc = QAPIDoc(self, info)
|
||||||
self.accept(False)
|
self.accept(False)
|
||||||
while self.tok == '#':
|
while self.tok == '#':
|
||||||
if self.val.startswith('##'):
|
if self.val.startswith('##'):
|
||||||
@ -279,15 +280,20 @@ class QAPISchemaParser:
|
|||||||
raise QAPIParseError(
|
raise QAPIParseError(
|
||||||
self,
|
self,
|
||||||
"junk after '##' at end of documentation comment")
|
"junk after '##' at end of documentation comment")
|
||||||
doc.end_comment()
|
cur_doc.end_comment()
|
||||||
|
docs.append(cur_doc)
|
||||||
self.accept()
|
self.accept()
|
||||||
return doc
|
return docs
|
||||||
if self.val.startswith('# ='):
|
if self.val.startswith('# ='):
|
||||||
if doc.symbol:
|
if cur_doc.symbol:
|
||||||
raise QAPIParseError(
|
raise QAPIParseError(
|
||||||
self,
|
self,
|
||||||
"unexpected '=' markup in definition documentation")
|
"unexpected '=' markup in definition documentation")
|
||||||
doc.append(self.val)
|
if cur_doc.body.text:
|
||||||
|
cur_doc.end_comment()
|
||||||
|
docs.append(cur_doc)
|
||||||
|
cur_doc = QAPIDoc(self, info)
|
||||||
|
cur_doc.append(self.val)
|
||||||
self.accept(False)
|
self.accept(False)
|
||||||
|
|
||||||
raise QAPIParseError(self, "documentation comment must end with '##'")
|
raise QAPIParseError(self, "documentation comment must end with '##'")
|
||||||
@ -316,7 +322,6 @@ class QAPIDoc:
|
|||||||
def __init__(self, name=None):
|
def __init__(self, name=None):
|
||||||
# optional section name (argument/member or section name)
|
# optional section name (argument/member or section name)
|
||||||
self.name = name
|
self.name = name
|
||||||
# the list of lines for this section
|
|
||||||
self.text = ''
|
self.text = ''
|
||||||
|
|
||||||
def append(self, line):
|
def append(self, line):
|
||||||
|
@ -69,7 +69,8 @@ event EVT-BOXED Object
|
|||||||
doc freeform
|
doc freeform
|
||||||
body=
|
body=
|
||||||
= Section
|
= Section
|
||||||
|
doc freeform
|
||||||
|
body=
|
||||||
== Subsection
|
== Subsection
|
||||||
|
|
||||||
*strong* _with emphasis_
|
*strong* _with emphasis_
|
||||||
|
Loading…
Reference in New Issue
Block a user