summaryrefslogtreecommitdiff
path: root/sphinx/domains/javascript.py
diff options
context:
space:
mode:
authormitsuhiko <devnull@localhost>2010-05-27 13:52:02 +0200
committermitsuhiko <devnull@localhost>2010-05-27 13:52:02 +0200
commit04a2d52ec6bd30c72da893740ed98c44dac23487 (patch)
treedf60b230b55d9229eeb91b43278fbfaf13e5116a /sphinx/domains/javascript.py
parentc50f4037a6042c04f62cde52e31922c8fb974bb7 (diff)
downloadsphinx-04a2d52ec6bd30c72da893740ed98c44dac23487.tar.gz
Added :js:class: which makes JS documentation a lot more readible
Diffstat (limited to 'sphinx/domains/javascript.py')
-rw-r--r--sphinx/domains/javascript.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py
index 31a76987..890af8e1 100644
--- a/sphinx/domains/javascript.py
+++ b/sphinx/domains/javascript.py
@@ -27,6 +27,9 @@ class JSObject(ObjectDescription):
#: added
has_arguments = False
+ #: what is displayed right before the documentation entry
+ display_prefix = None
+
def handle_signature(self, sig, signode):
sig = sig.strip()
if '(' in sig and sig[-1:] == ')':
@@ -58,6 +61,9 @@ class JSObject(ObjectDescription):
signode['object'] = objectname
signode['fullname'] = fullname
+ if self.display_prefix:
+ signode += addnodes.desc_annotation(self.display_prefix,
+ self.display_prefix)
if nameprefix:
signode += addnodes.desc_addname(nameprefix + '.', nameprefix + '.')
signode += addnodes.desc_name(name, name)
@@ -116,6 +122,8 @@ class JSObject(ObjectDescription):
if not obj:
return _('%s() (built-in function)') % name
return _('%s() (%s method)') % (name, obj)
+ elif self.objtype == 'class':
+ return _('%s() (class)') % name
elif self.objtype == 'data':
return _('%s (global variable or constant)') % name
elif self.objtype == 'attribute':
@@ -139,6 +147,11 @@ class JSCallable(JSObject):
]
+class JSConstructor(JSCallable):
+ """Like a callable but with a different prefix"""
+ display_prefix = 'class '
+
+
class JSXRefRole(XRefRole):
def process_link(self, env, refnode, has_explicit_title, title, target):
# basically what sphinx.domains.python.PyXRefRole does
@@ -164,18 +177,21 @@ class JavaScriptDomain(Domain):
# if you add a new object type make sure to edit JSObject.get_index_string
object_types = {
'function': ObjType(l_('function'), 'func'),
+ 'class': ObjType(l_('class'), 'class'),
'data': ObjType(l_('data'), 'data'),
'attribute': ObjType(l_('attribute'), 'attr'),
}
directives = {
'function': JSCallable,
+ 'class': JSConstructor,
'data': JSObject,
'attribute': JSObject,
}
roles = {
- 'func': JSXRefRole(fix_parens=True),
- 'data': JSXRefRole(),
- 'attr': JSXRefRole(),
+ 'func': JSXRefRole(fix_parens=True),
+ 'class': JSXRefRole(fix_parens=True),
+ 'data': JSXRefRole(),
+ 'attr': JSXRefRole(),
}
initial_data = {
'objects': {}, # fullname -> docname, objtype