diff options
| author | mitsuhiko <devnull@localhost> | 2010-05-27 13:52:02 +0200 |
|---|---|---|
| committer | mitsuhiko <devnull@localhost> | 2010-05-27 13:52:02 +0200 |
| commit | 04a2d52ec6bd30c72da893740ed98c44dac23487 (patch) | |
| tree | df60b230b55d9229eeb91b43278fbfaf13e5116a /sphinx/domains/javascript.py | |
| parent | c50f4037a6042c04f62cde52e31922c8fb974bb7 (diff) | |
| download | sphinx-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.py | 22 |
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 |
