The pipeline defines how nodes carrying data are generated and when they are rendered as part of the document.
- Generation: :py:class:`~sphinxnotes.render.BaseContextRole`,
:py:class:`~sphinxnotes.render.BaseContextDirective` and their subclasses
create :py:class:`~sphinxnotes.render.pending_node` on document parsing,
and the node will be inserted to the document tree. The node contains:
- :ref:`context`, the dynamic content of a Jinja template
- :py:class:`~sphinxnotes.render.Template`,
- the Jinja template for rendering context to markup text (reStructuredText or Markdown)
- Render: the
pending_nodenode will be rendered at the appropriate :py:class:`~sphinxnotes.render.Phase`, depending on :py:attr:`~sphinxnotes.render.pending_node.template.phase`.
For a task-oriented explanation of template variables, extra context, and phase selection, see :doc:`tmpl`.
.. autoclass:: sphinxnotes.render.pending_node
Context refers to the dynamic content of a Jinja template. It can be:
- :py:class:`~sphinxnotes.render.ResolvedContext`:
- Our dedicated data type (:py:class:`sphinxnotes.render.ParsedData`), or any
Python
dict. - :py:class:`~sphinxnotes.render.PendingContext`:
Context that is not yet available. For example, it may contain :py:class:`unparsed data <sphinxnotes.render.RawData>`, remote data, and more.
:py:class:`PendingContext` can be resolved to :py:class:`~sphinxnotes.render.ResolvedContext` by calling :py:meth:`~sphinxnotes.render.PendingContext.resolve`.
.. autotype:: sphinxnotes.render.ResolvedContext
.. autoclass:: sphinxnotes.render.PendingContext :members: resolve
.. autoclass:: sphinxnotes.render.UnparsedData :show-inheritance:
See :doc:`tmpl` for the higher-level guide.
.. autoclass:: sphinxnotes.render.Template :members:
.. autoclass:: sphinxnotes.render.Phase :members:
See :doc:`tmpl` for built-in extra-context names such as doc and
sphinx, plus usage examples.
.. autofunction:: sphinxnotes.render.extra_context
.. autoclass:: sphinxnotes.render.ParsingPhaseExtraContext :members: phase, generate :undoc-members:
.. autoclass:: sphinxnotes.render.ParsedPhaseExtraContext :members: phase, generate :undoc-members:
.. autoclass:: sphinxnotes.render.ResolvingPhaseExtraContext :members: phase, generate :undoc-members:
.. autoclass:: sphinxnotes.render.GlobalExtraContext :members: phase, generate :undoc-members:
For a minimal end-to-end example of a custom directive, start with :doc:`usage`.
.. autoclass:: sphinxnotes.render.BaseContextRole :show-inheritance: :members: process_pending_node, queue_pending_node, queue_context, current_context, current_template
.. autoclass:: sphinxnotes.render.BaseDataDefineRole :show-inheritance: :members: process_pending_node, queue_pending_node, queue_context, current_schema, current_template
.. autoclass:: sphinxnotes.render.BaseContextDirective :show-inheritance: :members: process_pending_node, queue_pending_node, queue_context, current_context, current_template
.. autoclass:: sphinxnotes.render.BaseDataDefineDirective :show-inheritance: :members: process_pending_node, queue_pending_node, queue_context, current_schema, current_template
.. autoclass:: sphinxnotes.render.StrictDataDefineDirective :show-inheritance: :members: derive
.. autotype:: sphinxnotes.render.PlainValue
.. autotype:: sphinxnotes.render.Value
.. autoclass:: sphinxnotes.render.RawData :members: name, attrs, content :undoc-members:
.. autoclass:: sphinxnotes.render.ParsedData :members: name, attrs, content :undoc-members:
.. autoclass:: sphinxnotes.render.Field :members: parse
.. autoclass:: sphinxnotes.render.Schema :members: name, attrs, content :undoc-members:
.. autoclass:: sphinxnotes.render.data.Registry :members: .. autotype:: sphinxnotes.render.data.ByOptionStore
Developers can extend this extension (for example, to support more data types or add new extra context) by adding new items to :py:class:`sphinxnotes.render.REGISTRY`.
.. autodata:: sphinxnotes.render.REGISTRY
.. autoclass:: sphinxnotes.render.Registry .. autoproperty:: data