# HTML Context

The following variables and functions are exposed to the Sphinx HTML builder context in all versions.

## `Version` Objects

All versions will be exposed to the HTML context as `Version` objects with the following attributes:

name

  The branch or tag name.

url

  The URL to the current page in this version.

version

  The value of the `version` variable in `conf.py`.

release

  The value of the `release` variable in `conf.py`.

is_released

  `True` if this version matches the configured `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.

versions

  An iterable that yields all `Version` objects.

      <h3>Versions</h3>
      <ul>
        {%- for item in versions %}
        <li><a href="{{ item.url }}">{{ item.name }}</a></li>
        {%- endfor %}
      </ul>

versions.branches

  You can use the `branches` property of the `versions` iterable to get the `Version` objects for all branches.

      <h3>Branches</h3>
      <ul>
        {%- for item in versions.branches %}
        <li><a href="{{ item.url }}">{{ item.name }}</a></li>
        {%- endfor %}
      </ul>

versions.tags

  You can use the `tags` property of the `versions` iterable to get the `Version` objects for all tags.

      <h3>Tags</h3>
      <ul>
        {%- for item in versions.tags %}
        <li><a href="{{ item.url }}">{{ item.name }}</a></li>
        {%- endfor %}
      </ul>

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

      <h3>Releases</h3>
      <ul>
        {%- for item in versions.releases %}
        <li><a href="{{ item.url }}">{{ item.name }}</a></li>
        {%- endfor %}
      </ul>

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

      <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() function.

vhasdoc(other_version)

  This function is Similar to Sphinx’s hasdoc() function. It takes `other_version` as string and returns `True` if the current document exists in another version.

      {% if vhasdoc('master') %}
      This page is available in <a href="../master/index.html">master</a>.
      {% endif %}

vpathto(other_version)

  This function is Similar to Sphinx’s 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 is returned instead.

      {% 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

current_version

  A `Version` object for of the current version being built.

      <h3>Current Version: {{ current_version.name }}</h3>

latest_version

  A `Version` object of the latest released version being built.

      <h3>Latest Version: {{ current_version.name }}</h3>