doc/sphinx: Stop touching state_machine internals

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@intel.com>
Cc: linux-doc@vger.kernel.org
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
Daniel Vetter 2016-06-02 14:59:18 +02:00 committed by Jani Nikula
parent ebff7f929b
commit 16e161c8c6

View File

@ -32,6 +32,7 @@ import subprocess
import sys import sys
from docutils import nodes, statemachine from docutils import nodes, statemachine
from docutils.statemachine import ViewList
from docutils.parsers.rst import directives from docutils.parsers.rst import directives
from sphinx.util.compat import Directive from sphinx.util.compat import Directive
@ -92,8 +93,14 @@ class KernelDocDirective(Directive):
sys.stderr.write(err) sys.stderr.write(err)
lines = statemachine.string2lines(out, tab_width, convert_whitespace=True) lines = statemachine.string2lines(out, tab_width, convert_whitespace=True)
self.state_machine.insert_input(lines, source) result = ViewList(lines, source)
return []
node = nodes.section()
node.document = self.state.document
self.state.nested_parse(result, self.content_offset, node)
return node.children
except Exception as e: except Exception as e:
env.app.warn('kernel-doc \'%s\' processing failed with: %s' % env.app.warn('kernel-doc \'%s\' processing failed with: %s' %
(" ".join(cmd), str(e))) (" ".join(cmd), str(e)))