Skip to content

Instantly share code, notes, and snippets.

@dalejung
Created July 15, 2015 16:37
Show Gist options
  • Save dalejung/e76f38e4b8d27fd9275b to your computer and use it in GitHub Desktop.
Save dalejung/e76f38e4b8d27fd9275b to your computer and use it in GitHub Desktop.
def visit(node, parent, field_name, field_index):
node_item = handle_item(node, parent, field_name, field_index)
if node_item is None:
return
fields = {}
for field_name, field in ast.iter_fields(node):
fieldset = fields.setdefault(field_name, [])
if isinstance(field, list):
for i, item in enumerate(field):
ret = yield from visit(item, node, field_name, i)
fieldset.append(ret)
else:
ret = yield from visit(field, node, field_name, None)
fieldset.append(ret)
node_item['fields'] = fields
yield node_item
return node_item
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment