diff options
| author | DasIch <dasdasich@googlemail.com> | 2010-03-30 22:40:20 +0000 |
|---|---|---|
| committer | DasIch <dasdasich@googlemail.com> | 2010-03-30 22:40:20 +0000 |
| commit | d282dca51940a8c97e3c09af60e8a2625c3d2209 (patch) | |
| tree | 83e700eec9d3cc949af2e1788a9b946a269bddfe /sphinx/domains/javascript.py | |
| parent | 6047a6e43a0f3baa51ac24e892c73c80d1f28cf1 (diff) | |
| download | sphinx-d282dca51940a8c97e3c09af60e8a2625c3d2209.tar.gz | |
Added a :class:`JSXRefRole` which allows to display a method/attribute name only.
Diffstat (limited to 'sphinx/domains/javascript.py')
| -rw-r--r-- | sphinx/domains/javascript.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py index fb45b052..8f618a70 100644 --- a/sphinx/domains/javascript.py +++ b/sphinx/domains/javascript.py @@ -82,6 +82,23 @@ class JSCallable(JSObject): """Description of a JavaScript function, method or constructor.""" has_arguments = True +class JSXRefRole(XRefRole): + def process_link(self, env, refnode, has_explicit_title, title, target): + # basically what sphinx.domains.python.PyXRefRole does + refnode['js:object'] = env.temp_data.get('js:object') + if not has_explicit_title: + title = title.lstrip('.') + target = target.lstrip('~') + if title[0:1] == '~': + title = title[1:] + dot = title.rfind('.') + if dot != -1: + title = title[dot+1:] + if target[0:1] == '.': + target = target[1:] + refnode['refspecific'] = True + return title, target + class JavaScriptDomain(Domain): """JavaScript language domain.""" name = 'js' @@ -97,7 +114,7 @@ class JavaScriptDomain(Domain): 'attribute' : JSObject, } roles = { - 'func': XRefRole(fix_parens=True), - 'data': XRefRole(), - 'attr': XRefRole() + 'func': JSXRefRole(fix_parens=True), + 'data': JSXRefRole(), + 'attr': JSXRefRole() } |
