| ## Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| ## use this file except in compliance with the License. You may obtain a copy of |
| ## the License at |
| ## |
| ## http://www.apache.org/licenses/LICENSE-2.0 |
| ## |
| ## Unless required by applicable law or agreed to in writing, software |
| ## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| ## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| ## License for the specific language governing permissions and limitations under |
| ## the License. |
| |
| import os |
| |
| |
| def get_github_url(app, view, path): |
| return 'https://github.com/{project}/{view}/{branch}/{path}'.format( |
| project=app.config.github_project, |
| view=view, |
| branch=app.config.github_branch, |
| path=path) |
| |
| |
| def html_page_context(app, pagename, templatename, context, doctree): |
| # base template for common sphinx pages like search or genindex |
| # there is no need to provide github show/edit links for them |
| if templatename != 'page.html': |
| return |
| |
| # ok, I'm aware about that this is wrong way to concat url segments |
| # but this is one is most portable between 2.x and 3.x versions |
| # plus it fits our current requirements. But still, patches are welcome (: |
| path = os.path.join( |
| app.config.github_docs_path, |
| os.path.relpath(doctree.get('source'), app.builder.srcdir)) |
| context['github_show_url'] = get_github_url(app, 'blob', path) |
| context['github_edit_url'] = get_github_url(app, 'edit', path) |
| |
| |
| def setup(app): |
| app.add_config_value('github_project', '', True) |
| app.add_config_value('github_branch', 'master', True) |
| app.add_config_value('github_docs_path', '', True) |
| app.connect('html-page-context', html_page_context) |