summaryrefslogtreecommitdiff
path: root/doc/_extensions/autojsdoc/parser/jsdoc.py
diff options
context:
space:
mode:
authorXavier Morel <xmo@odoo.com>2019-02-05 10:14:57 +0000
committerXavier Morel <xmo@odoo.com>2019-02-18 08:55:57 +0000
commitcca26f7952826601e9119478ac0edc30859d7f6a (patch)
tree9625ced5e87b47406e6bc72a1ec3f01b0c229a68 /doc/_extensions/autojsdoc/parser/jsdoc.py
parent7cd45840fc9b7f678fb50512d6c6e9c2933bdce2 (diff)
[FIX] doc: workarounds for weirdo code & refs
Make UnknownNS more capable (of giving no fucks) so the documentation builder blows up less on weird-ass code at module toplevels. UnknownNS should probably be split out from NSDoc though, that requires odd workarounds in `__getitem__`.
Diffstat (limited to 'doc/_extensions/autojsdoc/parser/jsdoc.py')
-rw-r--r--doc/_extensions/autojsdoc/parser/jsdoc.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/doc/_extensions/autojsdoc/parser/jsdoc.py b/doc/_extensions/autojsdoc/parser/jsdoc.py
index e6bd609f298..9e9b0ba441d 100644
--- a/doc/_extensions/autojsdoc/parser/jsdoc.py
+++ b/doc/_extensions/autojsdoc/parser/jsdoc.py
@@ -275,11 +275,26 @@ class ClassDoc(NSDoc):
d['mixins'] = self.mixins
return d
+DEFAULT = object()
class UnknownNS(NSDoc):
+ params = () # TODO: log warning when (somehow) trying to access / document an unknown object as ctor?
def get_property(self, name):
return super(UnknownNS, self).get_property(name) or \
UnknownNS({'name': '{}.{}'.format(self.name, name)})
+ def __getitem__(self, item):
+ if self._probably_not_property(item):
+ return super().__getitem__(item)
+ return self.get_property(item)
+
+ def _probably_not_property(self, item):
+ return (
+ not isinstance(item, str)
+ or item in (self.namekey, 'name', 'params')
+ or item.startswith(('_', 'guessed_'))
+ or item in self.parsed
+ )
+
class Unknown(CommentDoc):
@classmethod
def from_(cls, source):
@@ -325,7 +340,7 @@ def parse_comments(comments, doctype=None):
# in case a specific doctype is given, allow overriding it anyway
return guess(parsed, default=doctype)
-def guess(parsed, default=NSDoc):
+def guess(parsed, default=UnknownNS):
if 'class' in parsed:
return ClassDoc(parsed)
if 'function' in parsed: