blob: f812d9e6bbd48bdbd6cadee4aeb7bd503454680d [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)