summaryrefslogtreecommitdiffstats
path: root/Documentation/sphinx/kerneldoc.py
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/sphinx/kerneldoc.py')
-rw-r--r--Documentation/sphinx/kerneldoc.py34
1 files changed, 26 insertions, 8 deletions
diff --git a/Documentation/sphinx/kerneldoc.py b/Documentation/sphinx/kerneldoc.py
index 200c8aa4a04f..1159405cb920 100644
--- a/Documentation/sphinx/kerneldoc.py
+++ b/Documentation/sphinx/kerneldoc.py
@@ -37,7 +37,17 @@ import glob
37from docutils import nodes, statemachine 37from docutils import nodes, statemachine
38from docutils.statemachine import ViewList 38from docutils.statemachine import ViewList
39from docutils.parsers.rst import directives, Directive 39from docutils.parsers.rst import directives, Directive
40from sphinx.ext.autodoc import AutodocReporter 40
41#
42# AutodocReporter is only good up to Sphinx 1.7
43#
44import sphinx
45
46Use_SSI = sphinx.__version__[:3] >= '1.7'
47if Use_SSI:
48 from sphinx.util.docutils import switch_source_input
49else:
50 from sphinx.ext.autodoc import AutodocReporter
41 51
42import kernellog 52import kernellog
43 53
@@ -125,13 +135,7 @@ class KernelDocDirective(Directive):
125 lineoffset += 1 135 lineoffset += 1
126 136
127 node = nodes.section() 137 node = nodes.section()
128 buf = self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter 138 self.do_parse(result, node)
129 self.state.memo.reporter = AutodocReporter(result, self.state.memo.reporter)
130 self.state.memo.title_styles, self.state.memo.section_level = [], 0
131 try:
132 self.state.nested_parse(result, 0, node, match_titles=1)
133 finally:
134 self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter = buf
135 139
136 return node.children 140 return node.children
137 141
@@ -140,6 +144,20 @@ class KernelDocDirective(Directive):
140 (" ".join(cmd), str(e))) 144 (" ".join(cmd), str(e)))
141 return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))] 145 return [nodes.error(None, nodes.paragraph(text = "kernel-doc missing"))]
142 146
147 def do_parse(self, result, node):
148 if Use_SSI:
149 with switch_source_input(self.state, result):
150 self.state.nested_parse(result, 0, node, match_titles=1)
151 else:
152 save = self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter
153 self.state.memo.reporter = AutodocReporter(result, self.state.memo.reporter)
154 self.state.memo.title_styles, self.state.memo.section_level = [], 0
155 try:
156 self.state.nested_parse(result, 0, node, match_titles=1)
157 finally:
158 self.state.memo.title_styles, self.state.memo.section_level, self.state.memo.reporter = save
159
160
143def setup(app): 161def setup(app):
144 app.add_config_value('kerneldoc_bin', None, 'env') 162 app.add_config_value('kerneldoc_bin', None, 'env')
145 app.add_config_value('kerneldoc_srctree', None, 'env') 163 app.add_config_value('kerneldoc_srctree', None, 'env')