from . import pygments_override from . import switcher from . import translator import sphinx.builders.html from sphinx import addnodes from sphinx.environment.adapters import toctree from docutils import nodes def setup(app): app.set_translator('html', translator.BootstrapTranslator) # FIXME ANVFE Separate extensions and clean import in conf.py ??? switcher.setup(app) # VFE TODO check if default meta initialization is necessary. # If not, remove update_meta method app.connect('html-page-context', update_meta) def update_meta(app, pagename, templatename, context, doctree): meta = context.get('meta') if meta is None: meta = context['meta'] = {} class monkey(object): def __init__(self, obj): self.obj = obj def __call__(self, fn): name = fn.__name__ old = getattr(self.obj, name) setattr(self.obj, name, lambda self_, *args, **kwargs: \ fn(old, self_, *args, **kwargs)) @monkey(toctree.TocTree) def resolve(old_resolve, tree, docname, *args, **kwargs): resolved_toc = old_resolve(tree, docname, *args, **kwargs) if resolved_toc: # Not sure set_class really does what we want. _toctree_add_empty_class(tree, resolved_toc, docname) resolved_toc['classes'].append('testtesttest') return resolved_toc def _toctree_add_empty_class(tree, node, docname) -> None: for subnode in node.children: if isinstance(subnode, ( addnodes.compact_paragraph, nodes.list_item, nodes.bullet_list )): # for

,

  • and