diff options
| author | Martin Trigaux <mat@odoo.com> | 2016-10-11 12:06:39 +0200 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2016-10-11 12:09:28 +0200 |
| commit | 731fe1c9abbcd3df0cf27053daaf3e7ca3d08ba3 (patch) | |
| tree | ea956bbfd1e21d82cce8faa9406b71945546d4b8 /doc/_extensions/odoo_ext/switcher.py | |
| parent | 95280245367da42fead8be9892079a5795171fd0 (diff) | |
[FIX] doc: avoid conflict on extenstion and odoo folder
Diffstat (limited to 'doc/_extensions/odoo_ext/switcher.py')
| -rw-r--r-- | doc/_extensions/odoo_ext/switcher.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/doc/_extensions/odoo_ext/switcher.py b/doc/_extensions/odoo_ext/switcher.py new file mode 100644 index 00000000000..51fb604929c --- /dev/null +++ b/doc/_extensions/odoo_ext/switcher.py @@ -0,0 +1,44 @@ +from docutils import nodes, utils +from docutils.parsers.rst import Directive + +from pygments.lexers import get_lexer_by_name + +def setup(app): + app.add_directive('switcher', SwitcherDirective) + app.add_directive('case', CaseDirective) + +class SwitcherDirective(Directive): + has_content = True + + def run(self): + self.assert_has_content() + + body = nodes.compound('\n'.join(self.content), classes=['tabs']) + self.state.nested_parse(self.content, self.content_offset, body) + + titles = [] + for child in body.children: + if isinstance(child, nodes.literal_block): + titles.append(get_lexer_by_name(child['language']).name) + else: + assert child['names'], ("A switcher case must be either a "\ + "code block or a compound with a name") + titles.append(' '.join(child['names'])) + tabs = nodes.bullet_list('', *[ + nodes.list_item('', nodes.Text(title)) + for title in titles + ]) + node = nodes.compound('', tabs, body, classes=['content-switcher']) + return [node] + +class CaseDirective(Directive): + required_arguments = 1 + final_argument_whitespace = True + has_content = True + + def run(self): + self.assert_has_content() + + node = nodes.compound('\n'.join(self.content), names=[self.arguments[0]]) + self.state.nested_parse(self.content, self.content_offset, node) + return [node] |
