blob: 79bc193161911d4f4d391abe51afc4ada6c128e3 [file] [log] [blame]
## 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)