John Snow <js...@redhat.com> writes:

> This is just a test document that demonstrates the new qapi-domain doc
> generator. Note that this test document uses a nesting depth of 2 for
> the TOC unlike the existing QMP's reference nesting depth of 3. It's
> arbitrary and can be changed to suit taste, it has nothing to do with
> the new domain itself.
>
> Signed-off-by: John Snow <js...@redhat.com>
> ---
>  docs/index.rst      |  1 +
>  docs/qapi/index.rst | 53 +++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 54 insertions(+)
>  create mode 100644 docs/qapi/index.rst
>
> diff --git a/docs/index.rst b/docs/index.rst
> index 5665de85cab..4364f9f1618 100644
> --- a/docs/index.rst
> +++ b/docs/index.rst
> @@ -21,3 +21,4 @@ Welcome to QEMU's documentation!
>     specs/index
>     devel/index
>     glossary
> +   qapi/index
> diff --git a/docs/qapi/index.rst b/docs/qapi/index.rst
> new file mode 100644
> index 00000000000..e40dce09119
> --- /dev/null
> +++ b/docs/qapi/index.rst
> @@ -0,0 +1,53 @@
> +########################
> +QAPI Transmogrifier Test
> +########################
> +
> +This is a test render of the QEMU QMP reference manual using the new
> +"transmogrifier" generator in qapidoc.py in conjunction with the
> +qapi-domain.py sphinx extension.
> +
> +Some notable features:
> +
> + * Every QAPI definition visible below is available to be
> +   cross-referenced from anywhere else in the Sphinx docs; for example
> +   ```blockdev-add``` will render to `blockdev-add`.
> +
> + * There are type-specific cross-referencing roles available for
> +   alternates, commands, events, enums, structs, unions and modules. for
> +   example, ``:qapi:cmd:`block-dirty-bitmap-add``` resolves to
> +   :qapi:cmd:`block-dirty-bitmap-add`, and only works for commands. The
> +   roles available are ``cmd``, ``alt``, ``event``, ``enum``,
> +   ``struct``, ``union``, and ``mod``; with two meta-roles available:
> +   ``obj`` for absolutely any QAPI definition, and ``type`` for
> +   everything except commands, events, and modules.
> +
> + * There is a new `qapi-index` page which can be linked to with
> +   ```qapi-index```. There, you can browse a list of all QAPI
> +   definitions by type or alphabetically.

```qapi-index``` becomes a link in HTML.  The link takes me to an index
page.  Two observations:

* The index page appears not to be linked from the navigation thingie on
  the left.  Searching for "QAPI Index" there doesn't find it, either.

* The index is structured into sections titled Alternates, Commands |
  Enums, Events, Modules, Objects, A, ... Z.  As I scrolled down
  quickly, the transition from Objects to A confused me briefly: I
  didn't immediately understand that A, ... Z contains the union of
  everything above sorted into letter buckets.

> +
> + * QAPI definitions are also added to the existing `genindex` page.
> +
> + * All member/argument/return types are now cross-references to that
> +   type's definition. `chardev-add` is a good example.
> +
> + * This work-in-progress version does not perform any inlining.
> +
> + * This work-in-progress version actually also ignores branches entirely
> +   right now!
> +
> + * This version currently does not "prune" unnecessary docs.
> +
> + * This version does not add undocumented members or return values.
> +
> + * This version does not handle ifcond for anything other than top-level
> +   entity definitions.
> +
> + * This version renders sections in precisely the order they appear in
> +   source, even if that winds up looking silly.
> +
> +
> +.. contents::
> +   :depth: 2
> +
> +.. qapi-doc:: qapi/qapi-schema.json
> +   :transmogrify:


Reply via email to