qapi: Conjure up QAPIDoc.ArgSection for undocumented members

qapi2texi.py already conjures up ArgSections for undocumented
enumeration values, in texi_enum.  Drop that, and conjure them up for
all kinds of "arguments" (enumeration values, object and alternate
type members) in qapi.py instead.

Take care to keep generated documentation exactly the same for now.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1489582656-31133-16-git-send-email-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2017-03-15 13:57:04 +01:00
parent 069fb5b250
commit 860e877861
2 changed files with 18 additions and 18 deletions

View file

@ -224,9 +224,8 @@ class QAPIDoc(object):
def connect_member(self, member): def connect_member(self, member):
if member.name not in self.args: if member.name not in self.args:
# Undocumented TODO outlaw # Undocumented TODO outlaw
pass self.args[member.name] = QAPIDoc.ArgSection(member.name)
else: self.args[member.name].connect(member)
self.args[member.name].connect(member)
class QAPISchemaParser(object): class QAPISchemaParser(object):

View file

@ -123,7 +123,7 @@ def texi_format(doc):
return "\n".join(lines) return "\n".join(lines)
def texi_body(doc): def texi_body(doc, only_documented=False):
""" """
Format the body of a symbol documentation: Format the body of a symbol documentation:
- main body - main body
@ -131,17 +131,21 @@ def texi_body(doc):
- followed by "Returns/Notes/Since/Example" sections - followed by "Returns/Notes/Since/Example" sections
""" """
body = texi_format(str(doc.body)) + "\n" body = texi_format(str(doc.body)) + "\n"
if doc.args:
args = ''
for name, section in doc.args.iteritems():
if not section.content and not only_documented:
continue # Undocumented TODO require doc and drop
desc = str(section)
opt = ''
if section.optional:
desc = re.sub(r'^ *#optional *\n?|\n? *#optional *$|#optional',
'', desc)
opt = ' (optional)'
args += "@item @code{'%s'}%s\n%s\n" % (name, opt, texi_format(desc))
if args:
body += "@table @asis\n" body += "@table @asis\n"
for arg, section in doc.args.iteritems(): body += args
desc = str(section)
opt = ''
if section.optional:
desc = re.sub(r'^ *#optional *\n?|\n? *#optional *$|#optional',
'', desc)
opt = ' (optional)'
body += "@item @code{'%s'}%s\n%s\n" % (arg, opt,
texi_format(desc))
body += "@end table\n" body += "@end table\n"
for section in doc.sections: for section in doc.sections:
@ -183,10 +187,7 @@ def texi_union(expr, doc):
def texi_enum(expr, doc): def texi_enum(expr, doc):
"""Format an enum to texi""" """Format an enum to texi"""
for i in expr['data']: body = texi_body(doc, True)
if i not in doc.args:
doc.args[i] = qapi.QAPIDoc.ArgSection(i)
body = texi_body(doc)
return TYPE_FMT(type="Enum", return TYPE_FMT(type="Enum",
name=doc.symbol, name=doc.symbol,
body=body) body=body)