summaryrefslogtreecommitdiff
path: root/sphinx/domains/javascript.py
diff options
context:
space:
mode:
authorDasIch <dasdasich@googlemail.com>2010-03-30 22:40:20 +0000
committerDasIch <dasdasich@googlemail.com>2010-03-30 22:40:20 +0000
commitd282dca51940a8c97e3c09af60e8a2625c3d2209 (patch)
tree83e700eec9d3cc949af2e1788a9b946a269bddfe /sphinx/domains/javascript.py
parent6047a6e43a0f3baa51ac24e892c73c80d1f28cf1 (diff)
downloadsphinx-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.py23
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()
}