diff options
author | Julius Härtl <jus@bitgrid.net> | 2018-02-03 13:39:36 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2018-02-03 13:39:36 +0300 |
commit | cb8a8b7bd512baa0079289da7fad7e6a04da362e (patch) | |
tree | d087d10b8a5b1d9f551b4e5aef7d3057f754017c /_ext | |
parent | fd283ba1feaa35a027c1fc01b31184c970dafada (diff) |
Add edit on github link to documentation pages
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to '_ext')
-rw-r--r-- | _ext/edit_on_github.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/_ext/edit_on_github.py b/_ext/edit_on_github.py new file mode 100644 index 000000000..67fcf6f9d --- /dev/null +++ b/_ext/edit_on_github.py @@ -0,0 +1,47 @@ +""" +Sphinx extension to add ReadTheDocs-style "Edit on GitHub" links to the +sidebar. +Loosely based on https://github.com/astropy/astropy/pull/347 +""" + +import os +import warnings +from pprint import pprint + + +__licence__ = 'BSD (3 clause)' + + +def get_github_url(app, view, path): + return 'https://github.com/{project}/{view}/{branch}/{path}'.format( + project=app.config.edit_on_github_project, + view=view, + branch=app.config.edit_on_github_branch, + path=path) + + +def html_page_context(app, pagename, templatename, context, doctree): + if templatename != 'page.html': + return + + if not app.config.edit_on_github_project: + warnings.warn("edit_on_github_project not specified") + return + + if not app.config.current_docs: + warnings.warn("current_docs not specified") + return + + path = app.config.current_docs + '/' + os.path.relpath(doctree.get('source'), app.builder.srcdir) + show_url = get_github_url(app, 'blob', path) + edit_url = get_github_url(app, 'edit', path) + + context['show_on_github_url'] = show_url + context['edit_on_github_url'] = edit_url + + +def setup(app): + app.add_config_value('edit_on_github_project', '', True) + app.add_config_value('current_docs', '', True) + app.add_config_value('edit_on_github_branch', 'master', True) + app.connect('html-page-context', html_page_context) |