[ADD] github links from doc

This commit is contained in:
Xavier Morel 2014-09-03 10:18:20 +02:00
parent c0373318d9
commit f00bf9a461
7 changed files with 157 additions and 0 deletions

View File

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from . import html_domain
from . import github
# add Odoo style to pygments
from . import odoo_pygments
@ -8,6 +9,7 @@ sphinx_monkeypatch.patch()
def setup(app):
html_domain.setup(app)
github.setup(app)
app.add_directive('exercise', Exercise)
app.add_node(exercise, html=(

71
doc/_themes/odoodoc/github.py vendored Normal file
View File

@ -0,0 +1,71 @@
import inspect
import importlib
import os.path
from urlparse import urlunsplit
# FIXME: better way to handle this?
_app = None
def setup(app):
global _app
_app = app
app.add_config_value('github_user', None, 'env')
app.add_config_value('github_project', None, 'env')
def linkcode_resolve(domain, info):
# TODO: js?
if domain != 'py':
return None
module, fullname = info['module'], info['fullname']
# TODO: attributes/properties don't have modules, maybe try to look them
# up based on their cached host object?
if not module:
return None
obj = importlib.import_module(module)
for item in fullname.split('.'):
obj = getattr(obj, item, None)
if obj is None:
return None
# get original from decorated methods
try: obj = getattr(obj, '_orig')
except AttributeError: pass
try:
obj_source_path = inspect.getsourcefile(obj)
_, line = inspect.getsourcelines(obj)
except (TypeError, IOError):
# obj doesn't have a module, or something
return None
import openerp
project_root = os.path.join(os.path.dirname(openerp.__file__), '..')
return make_github_link(
os.path.relpath(obj_source_path, project_root),
line)
def make_github_link(path, line=None, mode="blob"):
config = _app.config
if not (config.github_user and config.github_project):
return None
urlpath = "/{user}/{project}/{mode}/{branch}/{path}".format(
user=config.github_user,
project=config.github_project,
branch=config.version or 'master',
path=path,
mode=mode,
)
return urlunsplit((
'https',
'github.com',
urlpath,
'',
'' if line is None else 'L%d' % line
))
def github_doc_link(pagename, mode='blob'):
return make_github_link(
'doc/%s%s' % (pagename, _app.config.source_suffix), mode=mode)

View File

@ -27,6 +27,11 @@
<div class="sphinxsidebarwrapper">
{{ toctree(maxdepth=4, collapse=False, includehidden=True,
main_navbar=False, titles_only=False) }}
{% if github %}
<p><a href="{{ github(pagename) }}" class="github">
Edit on GitHub
</a></p>
{% endif %}
</div>
</div>
{{ super() }}

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

View File

@ -6346,6 +6346,31 @@ body {
.sphinxsidebarwrapper > .nav li.current > .nav {
display: block;
}
.sphinxsidebarwrapper > p {
margin: 5px 10px 10px;
}
.sphinxsidebarwrapper > p a {
font-size: 13px;
}
.sphinxsidebarwrapper > p a:hover {
text-decoration: none;
}
.sphinxsidebarwrapper > p a.github {
padding-left: 15px;
position: relative;
}
.sphinxsidebarwrapper > p a.github:before {
left: 0;
top: 1px;
content: '';
position: absolute;
width: 13px;
height: 13px;
background: url(github-link.png) left bottom / 13px no-repeat;
}
.sphinxsidebarwrapper > p a.github:hover:before {
background-position: left top;
}
/* Side navigation graphical styling */
.sphinxsidebarwrapper {
width: 100%;
@ -6518,6 +6543,14 @@ body {
.headerlink {
display: none;
}
.viewcode-link {
font-weight: normal;
float: right;
display: none;
}
dt:hover > a > .viewcode-link {
display: inline;
}
div.section > h1 {
padding-bottom: 9px;
margin: 40px 0 20px;

View File

@ -155,6 +155,33 @@ body {
display: block;
}
}
> p {
margin: 5px 10px 10px;
a {
font-size: 13px;
&:hover {
text-decoration: none;
}
&.github {
padding-left: 15px;
position: relative;
&:before {
left: 0;
top: 1px;
content: '';
position: absolute;
width: 13px;
height: 13px;
background: url(github-link.png) left bottom / 13px no-repeat;
}
&:hover:before {
background-position: left top;
}
}
}
}
}
/* Side navigation graphical styling */
@ -325,6 +352,16 @@ body {
.headerlink {
display: none;
}
// move [source] link to the right
.viewcode-link {
font-weight: normal;
float: right;
display: none;
}
dt:hover > a > .viewcode-link {
display: inline;
}
// either that or overwrite visit_attribution/depart_attribution
blockquote p.attribution:extend(blockquote footer) {}

View File

@ -22,6 +22,7 @@ extensions = [
'sphinx.ext.todo',
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.linkcode',
'odoodoc',
'patchqueue'
]
@ -162,3 +163,11 @@ intersphinx_mapping = {
'python': ('https://docs.python.org/2/', None),
'werkzeug': ('http://werkzeug.pocoo.org/docs/0.9/', None),
}
from odoodoc.github import linkcode_resolve, github_doc_link
github_user = 'odoo'
github_project = 'odoo'
html_context = {
'github': github_doc_link
}