From 612c49f545b5374be45dbb4da21a5d708ebb894f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 2 May 2007 23:51:01 +0000 Subject: - Aliasizer removed. hooray ! - ClauseVisitor has handy chain() method. --- lib/sqlalchemy/sql.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/sql.py') diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index ab64d6528..fe987cc11 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -828,7 +828,21 @@ class ClauseVisitor(object): def traverse(self, obj): for n in obj.get_children(**self.__traverse_options__): self.traverse(n) - obj.accept_visitor(self) + v = self + while v is not None: + obj.accept_visitor(v) + v = getattr(v, '_next', None) + + def chain(self, visitor): + """'chain' an additional ClauseVisitor onto this ClauseVisitor. + + the chained visitor will receive all visit events after this one.""" + tail = self + while getattr(tail, '_next', None) is not None: + tail = tail._next + tail._next = visitor + return self + def visit_column(self, column): pass def visit_table(self, table): -- cgit v1.2.1