On Sun, Aug 9, 2020, 12:35 PM Yves Chevallier <canard...@gmail.com> wrote:

> I noticed a lot of complexity in Sphinx due to the fact the nodes cannot
> be altered during the EnvironmentCollector phase. However I don't
> understand why it works that way.
>
> For example, here below I would like to *tag* each `nodes.title` with an
> attribute, but as this is not the same instance, the added information is
> lost somewhere.
>
> Does anybody know what is the properway of passing information form the
> EnvironmentCollector to the Builder, and then to the Writer?
>
> ```python
> from docutils import nodes
> from sphinx.writers.latex import LaTeXTranslator
> from sphinx import addnodes
> from sphinx.environment.collectors import EnvironmentCollector
>
>
> def depart_title(self, node):
>     if not node['foobar']:
>         raise ValueError('Why?')
>
>
> class TitleCollector(EnvironmentCollector):
>     def get_updated_docs(self, app, env):
>         def traverse_all(app, env, docname):
>             doctree = env.get_doctree(docname)
>
>             for toc in doctree.traverse(addnodes.toctree):
>                 for _, subdocname in toc['entries']:
>                     traverse_all(app, env, subdocname)
>
>             for node in doctree.traverse(nodes.title):
>                 node['foobar'] = 42
>
>         traverse_all(app, env, env.config.master_doc)
>         return []
>
>     def clear_doc(self, app, env, docname):
>         pass
>
>     def process_doc(self, app, doctree):
>         pass
>
>     def merge_other(self, app, env, docnames, other):
>         pass
>
> def setup(app):
>     app.add_env_collector(TitleCollector)
>     LaTeXTranslator.depart_title = depart_title
>
>     return {
>         'version': '0.1',
>         'parallel_read_safe': True,
>         'parallel_write_safe': True,
>     }
> ```
>
> --
> You received this message because you are subscribed to the Google Groups
> "sphinx-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sphinx-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sphinx-users/db187481-3f38-4c9a-8dd2-e7a7334f9e4cn%40googlegroups.com
> <https://groups.google.com/d/msgid/sphinx-users/db187481-3f38-4c9a-8dd2-e7a7334f9e4cn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sphinx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sphinx-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sphinx-users/CAELGjd-vv6wLvdjeeGq4xjRPEAMgUjT4z0KED8CYEOviBE%3DPbA%40mail.gmail.com.

Reply via email to