Fix complex param parsing in docstrings.

This commit is contained in:
Yakov Borevich
2012-12-28 09:21:06 +04:00
parent db4b09e05e
commit c7cf7b6dc7
2 changed files with 18 additions and 12 deletions

View File

@@ -6,8 +6,8 @@ import evaluate
import parsing import parsing
DOCSTRING_PARAM_PATTERNS = [ DOCSTRING_PARAM_PATTERNS = [
r'\s*:type\s+%s:\s*([\d\w_]+)', # Sphinx r'\s*:type\s+%s:\s*([^\n]+)', # Sphinx
r'\s*@type\s+%s:\s*([\d\w_]+)', # Epidoc r'\s*@type\s+%s:\s*([^\n]+)', # Epidoc
r'\s*%s\s+\(([^()]+)\)' # googley r'\s*%s\s+\(([^()]+)\)' # googley
] ]
@@ -35,14 +35,12 @@ def follow_param(param):
def search_param_in_docstr(docstr, param_str): def search_param_in_docstr(docstr, param_str):
lines = docstr.split('\n')
# look at #40 to see definitions of those params # look at #40 to see definitions of those params
patterns = [ re.compile(p % re.escape(param_str)) for p in DOCSTRING_PARAM_PATTERNS ] patterns = [ re.compile(p % re.escape(param_str)) for p in DOCSTRING_PARAM_PATTERNS ]
for l in lines: for pattern in patterns:
for pattern in patterns: match = pattern.search(docstr)
match = pattern.match(l) if match:
if match: return match.group(1)
return match.group(1)
return None return None

View File

@@ -4,12 +4,15 @@ def f(a, b):
""" asdfasdf """ asdfasdf
:param a: blablabla :param a: blablabla
:type a: str :type a: str
:type b: (str, int)
:rtype: dict :rtype: dict
""" """
#? str() #? str()
a a
#? #? str()
b b[0]
#? int()
b[1]
#? dict() #? dict()
f() f()
@@ -34,12 +37,17 @@ def e(a, b):
""" asdfasdf """ asdfasdf
@type a: str @type a: str
@param a: blablabla @param a: blablabla
@type b: (str, int)
@param b: blablah
@rtype: list @rtype: list
""" """
#? str() #? str()
a a
#? #? str()
b b[0]
#? int()
b[1]
#? list() #? list()
e() e()