qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	"John Snow" <jsnow@redhat.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Michael Roth" <mdroth@linux.vnet.ibm.com>
Subject: Re: [PATCH 00/29] Convert QAPI doc comments to generate rST instead of texinfo
Date: Sat, 8 Feb 2020 14:59:28 +0000	[thread overview]
Message-ID: <CAFEAcA_WX1e1AWA=uryJLLMGNH7LMkr+iq+cMVnv9yneGSsECg@mail.gmail.com> (raw)
In-Reply-To: <87blq9jhb5.fsf@dusky.pond.sub.org>

On Sat, 8 Feb 2020 at 14:16, Markus Armbruster <armbru@redhat.com> wrote:
> I understand the difficulty of parsing rST (Paolo called it "the Perl of
> markup languages" for a reason).  What I don't yet understand is (1) why
> we need to recognize the document structure of doc comments, and (2) why
> we can do that by recognizing '=' markup, but ignore the native rST
> document structure markup.

I think we're completely at cross purposes here, so there's
something I've not managed to communicate clearly.

We don't need to recognize the document structure of doc
comments, indeed my implementation does not -- it just
throws a doc comment at the rST parser to handle.

We *do* need to recognize the structure *of the document*
(ie that it does have a thing with a heading "Block devices"
that contains another thing with a heading "Background jobs"
that in turn contains documentation for JobType, JobStatus....)
so that when we're building up our tree of docutils node
objects we know when we need to create a new 'section'
node and give it a title 'Block devices' and which of
the various section nodes in the tree should have all
the nodes that make up the documentation of 'JobType'
added to it.

In order to achieve this separation (don't care about
document structure inside lumps of rST, but do want to
know what the overall section/subsection structure of
the document is), this patchset pulls the identification
of the document structure (heading/subheadings) completely
out of being something you might find in the middle of
a doc comment, and makes them their own
special kind of markup:

##
# = This is a heading
##

(In my head I find I'm thinking of this as "not actually
a doc comment", which is probably where some of my
lack of clarity is coming from, since syntactically
speaking and from the point of view of qapi/parser.py
that is a sort of doc comment.)

I suppose that there's an argument that the identification
of headings and subheadings should really be done in
qapi/parser.py, so that instead of

        vis = QAPISchemaGenRSTVisitor(self)
        vis.visit_begin(schema)
        for doc in schema.docs:
            if doc.symbol:
                vis.symbol(doc, schema.lookup_entity(doc.symbol))
            else:
                vis.freeform(doc)

you would have something more like

        vis = QAPISchemaGenRSTVisitor(self)
        vis.visit_begin(schema)
        for doc in schema.docs:
            if doc.symbol:
                vis.symbol(doc, schema.lookup_entity(doc.symbol))
            else if doc.is_section_header:
                vis.start_new_section(doc)
            else:
                vis.freeform(doc)

(with the identification of headers and pulling out of
what level of nesting this header is and what its text
is done in parser.py)

thanks
-- PMM


  reply	other threads:[~2020-02-08 15:00 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-06 17:30 [PATCH 00/29] Convert QAPI doc comments to generate rST instead of texinfo Peter Maydell
2020-02-06 17:30 ` [PATCH 01/29] configure: Allow user to specify sphinx-build binary Peter Maydell
2020-02-06 17:30 ` [PATCH 02/29] configure: Check that sphinx-build is using Python 3 Peter Maydell
2020-02-07 16:17   ` Markus Armbruster
2020-02-07 16:30     ` Peter Maydell
2020-02-08  7:50       ` Markus Armbruster
2020-02-08 13:11         ` Peter Maydell
2020-02-06 17:30 ` [PATCH 03/29] Makefile: Fix typo in dependency list for interop manpages Peter Maydell
2020-02-06 17:30 ` [PATCH 04/29] qga/qapi-schema.json: Fix missing '-' in GuestDiskBusType doc comment Peter Maydell
2020-02-07  8:16   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 05/29] qga/qapi-schema.json: Fix indent level on doc comments Peter Maydell
2020-02-07  8:18   ` Markus Armbruster
2020-02-07  8:22     ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 06/29] qga/qapi-schema.json: minor format fixups for rST Peter Maydell
2020-02-07  8:32   ` Markus Armbruster
2020-02-13 16:20     ` Peter Maydell
2020-02-14 13:16       ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 07/29] qapi/block-core.json: Use literal block for ascii art Peter Maydell
2020-02-07  8:50   ` Markus Armbruster
2020-02-07  9:27     ` Peter Maydell
2020-02-06 17:30 ` [PATCH 08/29] qapi: Use ':' after @argument in doc comments Peter Maydell
2020-02-07  9:28   ` Markus Armbruster
2020-02-07  9:33     ` Max Reitz
2020-02-07 10:24     ` Kevin Wolf
2020-02-07 11:05       ` Peter Maydell
2020-02-07 14:43         ` Markus Armbruster
2020-02-07 15:01           ` Max Reitz
2020-02-07 15:40             ` Kevin Wolf
2020-02-07 15:24           ` Peter Maydell
2020-02-08  7:54             ` Markus Armbruster
2020-02-08 13:22               ` Peter Maydell
2020-02-06 17:30 ` [PATCH 09/29] qapi: Fix indent level on doc comments in json files Peter Maydell
2020-02-07  9:31   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 10/29] qapi: Remove hardcoded tabs Peter Maydell
2020-02-07  9:32   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 11/29] qapi/ui.json: Put input-send-event body text in the right place Peter Maydell
2020-02-07  9:45   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 12/29] qapi: Explicitly put "foo: dropped in n.n" notes into Notes section Peter Maydell
2020-02-07 10:06   ` Markus Armbruster
2020-02-07 14:23     ` Eric Blake
2020-02-06 17:30 ` [PATCH 13/29] qapi/ui.json: Avoid `...' texinfo style quoting Peter Maydell
2020-02-07 10:13   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 14/29] qapi/block-core.json: Use explicit bulleted lists Peter Maydell
2020-02-07 12:07   ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 15/29] qapi/ui.json: " Peter Maydell
2020-02-06 17:30 ` [PATCH 16/29] qapi/{block, misc, tmp}.json: " Peter Maydell
2020-02-07 10:33   ` Philippe Mathieu-Daudé
2020-02-06 17:30 ` [PATCH 17/29] qapi: Add blank lines before " Peter Maydell
2020-02-07 10:11   ` Philippe Mathieu-Daudé
2020-02-06 17:30 ` [PATCH 18/29] qapi/migration.json: Replace _this_ with *this* Peter Maydell
2020-02-07 16:54   ` Markus Armbruster
2020-02-07 17:00     ` Peter Maydell
2020-02-08 14:24       ` Markus Armbruster
2020-02-06 17:30 ` [PATCH 19/29] qapi/qapi-schema.json: Put headers in their own doc-comment blocks Peter Maydell
2020-02-07 15:34   ` Markus Armbruster
2020-02-07 16:13     ` Peter Maydell
2020-02-08 14:10       ` Markus Armbruster
2020-02-08 14:43         ` Peter Maydell
2020-02-06 17:30 ` [PATCH 20/29] qapi/machine.json: Escape a literal '*' in doc comment Peter Maydell
2020-02-06 17:30 ` [PATCH 21/29] scripts/qapi: Move doc-comment whitespace stripping to doc.py Peter Maydell
2020-02-06 17:30 ` [PATCH 22/29] scripts/qapi/parser.py: improve doc comment indent handling Peter Maydell
2020-02-06 17:30 ` [PATCH 23/29] docs/sphinx: Add new qapi-doc Sphinx extension Peter Maydell
2020-02-06 17:30 ` [PATCH 24/29] docs/interop: Convert qemu-ga-ref to rST Peter Maydell
2020-02-06 17:30 ` [PATCH 25/29] docs/interop: Convert qemu-qmp-ref " Peter Maydell
2020-02-06 17:30 ` [PATCH 26/29] qapi: Use rST markup for literal blocks Peter Maydell
2020-02-06 17:30 ` [PATCH 27/29] qga/qapi-schema.json: Add some headings Peter Maydell
2020-02-06 17:30 ` [PATCH 28/29] scripts/qapi: Remove texinfo generation support Peter Maydell
2020-02-06 17:59   ` Peter Maydell
2020-02-06 17:30 ` [PATCH 29/29] docs/devel/qapi-code-gen.txt: Update to new rST backend conventions Peter Maydell
2020-02-06 18:47 ` [PATCH 00/29] Convert QAPI doc comments to generate rST instead of texinfo Peter Maydell
2020-02-06 19:53 ` no-reply
2020-02-06 19:56 ` no-reply
2020-02-07 17:00 ` Markus Armbruster
2020-02-07 17:10   ` Peter Maydell
2020-02-08 14:15     ` Markus Armbruster
2020-02-08 14:59       ` Peter Maydell [this message]
2020-02-10  0:34 ` Aleksandar Markovic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFEAcA_WX1e1AWA=uryJLLMGNH7LMkr+iq+cMVnv9yneGSsECg@mail.gmail.com' \
    --to=peter.maydell@linaro.org \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).