Commit d3b92ce4 authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

Added support for recursive trees to Node.dump() utility

parent 67106b18
...@@ -176,13 +176,18 @@ class Node(object): ...@@ -176,13 +176,18 @@ class Node(object):
self._end_pos = pos self._end_pos = pos
return pos return pos
def dump(self, level=0, filter_out=("pos",), cutoff=100): def dump(self, level=0, filter_out=("pos",), cutoff=100, encountered=None):
if cutoff == 0: if cutoff == 0:
return "<...nesting level cutoff...>" return "<...nesting level cutoff...>"
if encountered is None:
encountered = set()
if id(self) in encountered:
return "<%s (%d) -- already output>" % (self.__class__.__name__, id(self))
encountered.add(id(self))
def dump_child(x, level): def dump_child(x, level):
if isinstance(x, Node): if isinstance(x, Node):
return x.dump(level, filter_out, cutoff-1) return x.dump(level, filter_out, cutoff-1, encountered)
elif isinstance(x, list): elif isinstance(x, list):
return "[%s]" % ", ".join([dump_child(item, level) for item in x]) return "[%s]" % ", ".join([dump_child(item, level) for item in x])
else: else:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment