From 431ded7a54368580e053ae8465a7111d472bf9e4 Mon Sep 17 00:00:00 2001 From: Gabriel Hottiger Date: Thu, 4 Jul 2019 13:28:02 +0200 Subject: [PATCH] [PDF Download] Add links to sidebars --- sphinxcontrib/versioning/__main__.py | 1 + .../versioning/_templates/versions.html | 19 +++++++++++++++---- sphinxcontrib/versioning/versions.py | 12 +++++++----- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/sphinxcontrib/versioning/__main__.py b/sphinxcontrib/versioning/__main__.py index 9743580..b28c4a6 100755 --- a/sphinxcontrib/versioning/__main__.py +++ b/sphinxcontrib/versioning/__main__.py @@ -281,6 +281,7 @@ def build(config, rel_source, destination, **options): sort=config.sort, priority=config.priority, invert=config.invert, + pdf_file=config.pdf_file, ) # Get root ref. diff --git a/sphinxcontrib/versioning/_templates/versions.html b/sphinxcontrib/versioning/_templates/versions.html index 4db3a0d..596fe39 100644 --- a/sphinxcontrib/versioning/_templates/versions.html +++ b/sphinxcontrib/versioning/_templates/versions.html @@ -9,7 +9,7 @@ {%- if versions.tags %}
Tags
- {%- for name, url in versions.tags %} + {%- for name, url, pdf_url in versions.tags %}
{{ name }}
{%- endfor %}
@@ -17,11 +17,22 @@ {%- if versions.branches %}
Branches
- {%- for name, url in versions.branches %} + {%- for name, url, pdf_url in versions.branches %}
{{ name }}
{%- endfor %}
{%- endif %} + {%- if versions.pdf_file %} +
+
PDF
+ {%- for name, url, pdf_url in versions.tags %} +
{{ name }}
+ {%- endfor %} + {%- for name, url, pdf_url in versions.branches %} +
{{ name }}
+ {%- endfor %} +
+ {%- endif %} {% elif html_theme == 'rasabaster' %} @@ -37,7 +48,7 @@ {%- if versions.tags %}

tags

@@ -45,7 +56,7 @@ {%- if versions.branches %}

branches

diff --git a/sphinxcontrib/versioning/versions.py b/sphinxcontrib/versioning/versions.py index f7a25b3..3dceda4 100644 --- a/sphinxcontrib/versioning/versions.py +++ b/sphinxcontrib/versioning/versions.py @@ -1,6 +1,7 @@ """Collect and sort version strings.""" import re +import os RE_SEMVER = re.compile(r'^v?V?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?([\w.+-]*)$') @@ -98,7 +99,7 @@ class Versions(object): :ivar dict recent_tag_remote: Most recently committed tag. """ - def __init__(self, remotes, sort=None, priority=None, invert=False): + def __init__(self, remotes, sort=None, priority=None, invert=False, pdf_file=None): """Constructor. :param iter remotes: Output of routines.gather_git_info(). Converted to list of dicts as instance variable. @@ -122,6 +123,7 @@ class Versions(object): self.recent_branch_remote = None self.recent_remote = None self.recent_tag_remote = None + self.pdf_file = pdf_file # Sort one or more times. if sort: @@ -194,13 +196,13 @@ class Versions(object): @property def branches(self): - """Return list of (name and urls) only branches.""" - return [(r['name'], self.vpathto(r['name'])) for r in self.remotes if r['kind'] == 'heads'] + """Return list of (name and urls, pdf_urls) only branches.""" + return [(r['name'], self.vpathto(r['name']), os.path.dirname(self.vpathto(r['name'])) + "/_static/" + self.pdf_file) for r in self.remotes if r['kind'] == 'heads'] @property def tags(self): - """Return list of (name and urls) only tags.""" - return [(r['name'], self.vpathto(r['name'])) for r in self.remotes if r['kind'] == 'tags'] + """Return list of (name and urls, pdf_urls) only tags.""" + return [(r['name'], self.vpathto(r['name']), os.path.dirname(self.vpathto(r['name'])) + "/_static/" + self.pdf_file) for r in self.remotes if r['kind'] == 'tags'] def vhasdoc(self, other_version): """Return True if the other version has the current document. Like Sphinx's hasdoc().