Re: [PATCH 1/3] doc/sphinx: Stop touching state_machine internals

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 02 Jun 2016, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote:
> Instead of just forcefully inserting our kernel-doc input and letting
> the state machine stumble over it the recommended way is to create
> ViewList, parse that and then return the list of parsed nodes.
>
> Suggested by Jani.
>
> Cc: Jani Nikula <jani.nikula@xxxxxxxxx>
> Cc: linux-doc@xxxxxxxxxxxxxxx
> Cc: Jonathan Corbet <corbet@xxxxxxx>
> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx>

Again, did a full diff before/after with all tmpl files converted, no
difference. And this really seems less hacky than messing with the state
machine directly, and it's also in line with what other extensions in
sphinx-contrib do.

Pushed to my sphinx-for-docs-next branch.

BR,
Jani.


> ---
>  Documentation/sphinx/kernel-doc.py | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/sphinx/kernel-doc.py b/Documentation/sphinx/kernel-doc.py
> index 9fc2c27916a9..bd422870101e 100644
> --- a/Documentation/sphinx/kernel-doc.py
> +++ b/Documentation/sphinx/kernel-doc.py
> @@ -32,6 +32,7 @@ import subprocess
>  import sys
>  
>  from docutils import nodes, statemachine
> +from docutils.statemachine import ViewList
>  from docutils.parsers.rst import directives
>  from sphinx.util.compat import Directive
>  
> @@ -92,8 +93,14 @@ class KernelDocDirective(Directive):
>                  sys.stderr.write(err)
>  
>              lines = statemachine.string2lines(out, tab_width, convert_whitespace=True)
> -            self.state_machine.insert_input(lines, source)
> -            return []
> +            result = ViewList(lines, source)
> +
> +            node = nodes.section()
> +            node.document = self.state.document
> +            self.state.nested_parse(result, self.content_offset, node)
> +
> +            return node.children
> +
>          except Exception as e:
>              env.app.warn('kernel-doc \'%s\' processing failed with: %s' %
>                           (" ".join(cmd), str(e)))

-- 
Jani Nikula, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux