mirror of
https://github.com/vale981/sphinx-multiversion
synced 2025-03-04 17:11:39 -05:00
161 lines
4.7 KiB
ReStructuredText
161 lines
4.7 KiB
ReStructuredText
![]() |
.. _context:
|
||
|
|
||
|
============
|
||
|
HTML Context
|
||
|
============
|
||
|
|
||
|
The following variables and functions are exposed to the `Sphinx HTML builder context <sphinx_context_>`_ in all versions.
|
||
|
|
||
|
``Version`` Objects
|
||
|
===================
|
||
|
|
||
|
All versions will be exposed to the HTML context as ``Version`` objects with the following attributes:
|
||
|
|
||
|
.. attribute:: name
|
||
|
|
||
|
The branch or tag name.
|
||
|
|
||
|
.. attribute:: url
|
||
|
|
||
|
The URL to the current page in this version.
|
||
|
|
||
|
.. attribute:: version
|
||
|
|
||
|
The value of the ``version`` variable in ``conf.py``.
|
||
|
|
||
|
.. attribute:: release
|
||
|
|
||
|
The value of the ``release`` variable in ``conf.py``.
|
||
|
|
||
|
.. attribute:: is_released
|
||
|
|
||
|
``True`` if this version matches the :ref:`configured <configuration>` ``smv_released_pattern`` regular expression, else ``False``.
|
||
|
|
||
|
|
||
|
Versions
|
||
|
========
|
||
|
|
||
|
The most important variable is ``versions``, which can be used to iterate over all found (and whitelisted) versions.
|
||
|
|
||
|
.. attribute:: versions
|
||
|
|
||
|
An iterable that yields all ``Version`` objects.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Versions</h3>
|
||
|
<ul>
|
||
|
{%- for item in versions %}
|
||
|
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
|
||
|
{%- endfor %}
|
||
|
</ul>
|
||
|
|
||
|
.. attribute:: versions.branches
|
||
|
|
||
|
You can use the ``branches`` property of the ``versions`` iterable to get the ``Version`` objects for all branches.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Branches</h3>
|
||
|
<ul>
|
||
|
{%- for item in versions.branches %}
|
||
|
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
|
||
|
{%- endfor %}
|
||
|
</ul>
|
||
|
|
||
|
.. attribute:: versions.tags
|
||
|
|
||
|
You can use the ``tags`` property of the ``versions`` iterable to get the ``Version`` objects for all tags.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Tags</h3>
|
||
|
<ul>
|
||
|
{%- for item in versions.tags %}
|
||
|
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
|
||
|
{%- endfor %}
|
||
|
</ul>
|
||
|
|
||
|
.. attribute:: versions.releases
|
||
|
|
||
|
You can use the ``releases`` property of the ``versions`` iterable to get all ``Version`` objects where the ``ìs_released`` attribute is ``True``.
|
||
|
This is determined by the ``smv_released_pattern`` in the :ref:`Configuration <configuration>`.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Releases</h3>
|
||
|
<ul>
|
||
|
{%- for item in versions.releases %}
|
||
|
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
|
||
|
{%- endfor %}
|
||
|
</ul>
|
||
|
|
||
|
.. attribute:: versions.in_development
|
||
|
|
||
|
You can use the ``in_development`` property of the ``versions`` iterable to get all ``Version`` objects where the ``ìs_released`` attribute is ``False``.
|
||
|
This is determined by the ``smv_released_pattern`` in the :ref:`Configuration <configuration>`.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>In Development</h3>
|
||
|
<ul>
|
||
|
{%- for item in versions.in_development %}
|
||
|
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
|
||
|
{%- endfor %}
|
||
|
</ul>
|
||
|
|
||
|
Functions
|
||
|
=========
|
||
|
|
||
|
Similar to Sphinx's `hasdoc() <sphinx_hasdoc_>`_ function.
|
||
|
|
||
|
.. function:: vhasdoc(other_version)
|
||
|
|
||
|
This function is Similar to Sphinx's `hasdoc() <sphinx_hasdoc_>`_ function.
|
||
|
It takes ``other_version`` as string and returns ``True`` if the current document exists in another version.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
{% if vhasdoc('master') %}
|
||
|
This page is available in <a href="../master/index.html">master</a>.
|
||
|
{% endif %}
|
||
|
|
||
|
.. function:: vpathto(other_version)
|
||
|
|
||
|
This function is Similar to Sphinx's `pathto() <sphinx_pathto_>`_ function.
|
||
|
It takes ``other_version`` as string and returns the relative URL to the current page in the other version.
|
||
|
If the current page does not exist in that version, the relative URL to its `master_doc <sphinx_master_doc_>`_ is returned instead.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
{% if vhasdoc('master') %}
|
||
|
This page is also available in <a href="{{ vpathto('master') }}">master</a>.
|
||
|
{% else %}
|
||
|
Go to <a href="{{ vpathto('master') }}">master</a> for the latest docs.
|
||
|
{% endif %}
|
||
|
|
||
|
Other Variables
|
||
|
===============
|
||
|
|
||
|
.. attribute:: current_version
|
||
|
|
||
|
A ``Version`` object for of the current version being built.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Current Version: {{ current_version.name }}</h3>
|
||
|
|
||
|
.. attribute:: latest_version
|
||
|
|
||
|
A ``Version`` object of the latest released version being built.
|
||
|
|
||
|
.. code-block:: jinja
|
||
|
|
||
|
<h3>Latest Version: {{ current_version.name }}</h3>
|
||
|
|
||
|
|
||
|
.. _sphinx_context: http://www.sphinx-doc.org/en/stable/config.html?highlight=context#confval-html_context
|
||
|
.. _sphinx_master_doc: http://www.sphinx-doc.org/en/stable/config.html?highlight=context#confval-master_doc
|
||
|
.. _sphinx_hasdoc: http://www.sphinx-doc.org/en/stable/templating.html#hasdoc
|
||
|
.. _sphinx_pathto: http://www.sphinx-doc.org/en/stable/templating.html#pathto
|