Marc-André Lureau <marcandre.lur...@redhat.com> writes: > As the name suggests, the qapi2texi script converts JSON QAPI > description into a texi file suitable for different target > formats (info/man/txt/pdf/html...). > > It parses the following kind of blocks: > > Free-form: > > ## > # = Section > # == Subsection > # > # Some text foo with *emphasis* > # 1. with a list > # 2. like that > # > # And some code: > # | $ echo foo > # | -> do this > # | <- get that > # > ## > > Symbol description: > > ## > # @symbol: > # > # Symbol body ditto ergo sum. Foo bar > # baz ding. > # > # @param1: the frob to frobnicate > # @param2: #optional how hard to frobnicate > # > # Returns: the frobnicated frob. > # If frob isn't frobnicatable, GenericError. > # > # Since: version > # Notes: notes, comments can have > # - itemized list > # - like this > # > # Example: > # > # -> { "execute": "quit" } > # <- { "return": {} } > # > ## > > That's roughly following the following EBNF grammar: > > api_comment = "##\n" comment "##\n" > comment = freeform_comment | symbol_comment > freeform_comment = { "# " text "\n" | "#\n" } > symbol_comment = "# @" name ":\n" { member | tag_section | freeform_comment } > member = "# @" name ':' [ text ] "\n" freeform_comment > tag_section = "# " ( "Returns:", "Since:", "Note:", "Notes:", "Example:", > "Examples:" ) [ text ] "\n" freeform_comment > text = free text with markup > > Note that the grammar is ambiguous: a line "# @foo:\n" can be parsed > both as freeform_comment and as symbol_comment. The actual parser > recognizes symbol_comment. > > See docs/qapi-code-gen.txt for more details. > > Deficiencies and limitations: > - the generated QMP documentation includes internal types > - union type support is lacking > - type information is lacking in generated documentation > - doc comment error message positions are imprecise, they point > to the beginning of the comment. > - a few minor issues, all marked TODO/FIXME in the code > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
Squashing in the appended patch along with updates to expected output to avoid git complaining about trailing blank lines like this: tests/qapi-schema/comments.out:7: new blank line at EOF. tests/qapi-schema/event-case.out:8: new blank line at EOF. tests/qapi-schema/ident-with-escape.out:10: new blank line at EOF. tests/qapi-schema/include-relpath.out:7: new blank line at EOF. tests/qapi-schema/include-repetition.out:7: new blank line at EOF. tests/qapi-schema/include-simple.out:7: new blank line at EOF. tests/qapi-schema/indented-expr.out:13: new blank line at EOF. tests/qapi-schema/qapi-schema-test.out:446: new blank line at EOF. diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py index 39b55b9..b4cde4f 100644 --- a/tests/qapi-schema/test-qapi.py +++ b/tests/qapi-schema/test-qapi.py @@ -66,4 +66,6 @@ for doc in schema.docs: print ' arg=%s\n%s' % (arg, section) for section in doc.sections: print ' section=%s\n%s' % (section.name, section) - print ' body=\n%s' % doc.body + body = str(doc.body) + if body: + print ' body=\n%s' % body