__traverse_options__ = {}
def traverse_single(self, obj, **kw):
- for v in self._visitor_iterator:
+ for v in self.visitor_iterator:
meth = getattr(v, "visit_%s" % obj.__visit_name__, None)
if meth:
return meth(obj, **kw)
return visitors
@property
- def _visitor_iterator(self):
+ def visitor_iterator(self):
"""iterate through this visitor and each 'chained' visitor."""
v = self
the chained visitor will receive all visit events after this one.
"""
- tail = list(self._visitor_iterator)[-1]
+ tail = list(self.visitor_iterator)[-1]
tail._next = visitor
return self
"""traverse and visit the given expression structure."""
def replace(elem):
- for v in self._visitor_iterator:
+ for v in self.visitor_iterator:
e = v.replace(elem)
if e is not None:
return e