From 5b74bba3a3e6be2a3bab1aa735d45120181dc0fd Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Wed, 9 Mar 2016 12:15:47 +0000
Subject: [PATCH] docs: Add versions.html template and support code for a
 version sidebar.

---
 docs/conf.py                 | 24 +++++++++++++++-------
 docs/templates/versions.html | 39 ++++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+), 7 deletions(-)
 create mode 100644 docs/templates/versions.html

diff --git a/docs/conf.py b/docs/conf.py
index 28ee11399..6ff7cb0d9 100755
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -26,18 +26,28 @@ from collections import OrderedDict
 micropy_port = os.getenv('MICROPY_PORT') or 'pyboard'
 tags.add('port_' + micropy_port)
 ports = OrderedDict((
-    ("unix", "unix"),
-    ("pyboard", "the pyboard"),
-    ("wipy", "the WiPy"),
-    ("esp8266", "esp8266"),
+    ('unix', ('unix', 'unix')),
+    ('pyboard', ('pyboard', 'the pyboard')),
+    ('wipy', ('WiPy', 'the WiPy')),
+    ('esp8266', ('ESP8266', 'the ESP8266')),
 ))
 
 # The members of the html_context dict are available inside topindex.html
-url_prefix = os.getenv('MICROPY_URL_PREFIX') or '/'
+micropy_version = os.getenv('MICROPY_VERSION') or 'latest'
+url_pattern = '%s/en/%%s/%%s' % (os.getenv('MICROPY_URL_PREFIX') or '/',)
 html_context = {
     'port':micropy_port,
-    'port_name':ports[micropy_port],
-    'all_ports':[(n, url_prefix + p) for p, n in ports.items()],
+    'port_short_name':ports[micropy_port][0],
+    'port_name':ports[micropy_port][1],
+    'port_version':micropy_version,
+    'all_ports':[
+        (port_name[0], url_pattern % (micropy_version, port_id))
+            for port_id, port_name in ports.items()
+    ],
+    'all_versions':[
+        (ver, url_pattern % (ver, micropy_port))
+            for ver in ('v1.4', 'v1.4.1', 'v1.5', 'v1.6', 'latest')
+    ],
 }
 
 
diff --git a/docs/templates/versions.html b/docs/templates/versions.html
new file mode 100644
index 000000000..977aefab1
--- /dev/null
+++ b/docs/templates/versions.html
@@ -0,0 +1,39 @@
+<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
+  <span class="rst-current-version" data-toggle="rst-current-version">
+    <span class="fa fa-book"> Ports and Versions</span>
+    {{ port_short_name }} ({{ port_version }})
+    <span class="fa fa-caret-down"></span>
+  </span>
+  <div class="rst-other-versions">
+    <dl>
+      <dt>Ports</dt>
+      {% for slug, url in all_ports %}
+        <dd><a href="{{ url }}">{{ slug }}</a></dd>
+      {% endfor %}
+    </dl>
+    <dl>
+      <dt>Versions</dt>
+      {% for slug, url in all_versions %}
+        <dd><a href="{{ url }}">{{ slug }}</a></dd>
+      {% endfor %}
+    </dl>
+    <!--
+    <dl>
+      <dt>Downloads</dt>
+      {% for type, url in downloads %}
+        <dd><a href="{{ url }}">{{ type }}</a></dd>
+      {% endfor %}
+    </dl>
+    -->
+    <hr/>
+    <dl>
+      <dt>External links</dt>
+        <dd>
+          <a href="http://www.micropython.org">micropython.org</a>
+        </dd>
+        <dd>
+          <a href="https://github.com/micropython/micropython">GitHub</a>
+        </dd>
+    </dl>
+  </div>
+</div>
-- 
GitLab