in tools/tfdoc.py [0:0]
def _parse(body, enum=VAR_ENUM, re=VAR_RE, template=VAR_TEMPLATE):
'Low-level parsing function for outputs and variables.'
item = context = None
for m in re.finditer(body):
token = enum(m.lastindex)
data = m.group(m.lastindex)
if token == enum.OPEN:
match = m.group(0)
leading_lines = len(match) - len(match.lstrip("\n"))
start = m.span()[0]
line = body[:start].count('\n') + leading_lines + 1
item = {'name': data, 'tags': {}, 'line': line}
item.update({k: [] for k in template})
context = None
elif token == enum.CLOSE:
if item:
yield item
item = context = None
elif token == enum.ATTR_DATA:
if not item:
continue
context = m.group(m.lastindex - 1)
item[context].append(data)
elif token == enum.SKIP:
context = token
elif token == enum.COMMENT:
if item and data.startswith('tfdoc:'):
k, v = data.split(' ', 1)
item['tags'][k[6:]] = v
elif token == enum.TXT:
if context and context != enum.SKIP:
item[context].append(data)