summaryrefslogtreecommitdiff
path: root/sphinx/ext/mathbase.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-02-18 21:48:00 +0100
committerGeorg Brandl <georg@python.org>2009-02-18 21:48:00 +0100
commit3724f9020a93a97f674d26bcdf25a62abde1c4e9 (patch)
tree614b4d66284678956e536440c67b7ef8e9b5715e /sphinx/ext/mathbase.py
parent6bfed75113b754839f7c454a4e567e9fa12557f3 (diff)
downloadsphinx-git-3724f9020a93a97f674d26bcdf25a62abde1c4e9.tar.gz
Convert directives in builtin extensions to class API.
Diffstat (limited to 'sphinx/ext/mathbase.py')
-rw-r--r--sphinx/ext/mathbase.py48
1 files changed, 30 insertions, 18 deletions
diff --git a/sphinx/ext/mathbase.py b/sphinx/ext/mathbase.py
index 12af089da..fea786e3e 100644
--- a/sphinx/ext/mathbase.py
+++ b/sphinx/ext/mathbase.py
@@ -12,6 +12,8 @@
from docutils import nodes, utils
from docutils.parsers.rst import directives
+from sphinx.util.compat import Directive
+
class math(nodes.Inline, nodes.TextElement):
pass
@@ -45,22 +47,33 @@ def eq_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
node['docname'] = inliner.document.settings.env.docname
return [node], []
-def math_directive(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- latex = '\n'.join(content)
- if arguments and arguments[0]:
- latex = arguments[0] + '\n\n' + latex
- node = displaymath()
- node['latex'] = latex
- node['label'] = options.get('label', None)
- node['nowrap'] = 'nowrap' in options
- node['docname'] = state.document.settings.env.docname
- ret = [node]
- if node['label']:
- tnode = nodes.target('', '', ids=['equation-' + node['label']])
- state.document.note_explicit_target(tnode)
- ret.insert(0, tnode)
- return ret
+
+class MathDirective(Directive):
+
+ has_content = True
+ required_arguments = 0
+ optional_arguments = 1
+ final_argument_whitespace = True
+ option_spec = {
+ 'label': directives.unchanged,
+ 'nowrap': directives.flag,
+ }
+
+ def run(self):
+ latex = '\n'.join(self.content)
+ if self.arguments and self.arguments[0]:
+ latex = self.arguments[0] + '\n\n' + latex
+ node = displaymath()
+ node['latex'] = latex
+ node['label'] = self.options.get('label', None)
+ node['nowrap'] = 'nowrap' in self.options
+ node['docname'] = self.state.document.settings.env.docname
+ ret = [node]
+ if node['label']:
+ tnode = nodes.target('', '', ids=['equation-' + node['label']])
+ self.state.document.note_explicit_target(tnode)
+ ret.insert(0, tnode)
+ return ret
def latex_visit_math(self, node):
@@ -134,6 +147,5 @@ def setup(app, htmlinlinevisitors, htmldisplayvisitors):
html=(html_visit_eqref, html_depart_eqref))
app.add_role('math', math_role)
app.add_role('eq', eq_role)
- app.add_directive('math', math_directive, 1, (0, 1, 1),
- label=directives.unchanged, nowrap=directives.flag)
+ app.add_directive('math', MathDirective)
app.connect('doctree-resolved', number_equations)