.. _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