[Jifty-commit] r5705 - Jifty-DBI/branches/tisql/lib/Jifty/DBI

Jifty commits jifty-commit at lists.jifty.org
Tue Aug 12 22:58:28 EDT 2008


Author: ruz
Date: Tue Aug 12 22:58:27 2008
New Revision: 5705

Modified:
   Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm

Log:
* take a callback in parse_condition instead of aliases,
  call this callback each time the condition has column
  reference.

Modified: Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm
==============================================================================
--- Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm	(original)
+++ Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm	Tue Aug 12 22:58:27 2008
@@ -74,7 +74,9 @@
 
     $tree->{'conditions'} = $self->as_array(
         $string,
-        operand_cb => sub { return $self->parse_condition( $_[0], $tree->{'aliases'} ) },
+        operand_cb => sub { return $self->parse_condition( 
+            $_[0], sub { $self->find_column( $_[0], $tree->{'aliases'} ) }
+        ) },
     );
     $self->{'tisql'}{'conditions'} = $tree->{'conditions'};
     $self->apply_query_tree( $tree->{'conditions'} );
@@ -209,12 +211,15 @@
 
     my $tree = $self->as_array(
         $query,
-        operand_cb => sub { return $self->parse_condition( $_[0],
-            { $args{'column'}->name => { 
-                chain => [ $args{'column'} ],
-                string => '',
-                sql_alias => $right_alias,
-            } },
+        operand_cb => sub { return $self->parse_condition( 
+            $_[0], sub { return $self->find_column(
+                $_[0],
+                { $args{'column'}->name => { 
+                    chain => [ $args{'column'} ],
+                    string => '',
+                    sql_alias => $right_alias,
+                } },
+            ) }
         ) },
     );
 
@@ -226,10 +231,10 @@
 sub parse_condition {
     my $self = shift;
     my $string = shift;
-    my $aliases = shift;
+    my $cb = shift;
 
     if ( $string =~ /^($re_column)\s*($re_sql_op_bin)\s*($re_value)$/o ) {
-        my ($lhs, $op, $rhs) = ($self->find_column($1, $aliases), $2, $3);
+        my ($lhs, $op, $rhs) = ($cb->($1), $2, $3);
         if ( $rhs =~ /^$re_delim$/ ) {
             $rhs =~ s/^["']//g;
             $rhs =~ s/["']$//g;
@@ -237,12 +242,12 @@
         return { lhs => $lhs, op => $op, rhs => $rhs };
     }
     elsif ( $string =~ /^($re_column)\s*($re_sql_op_un)$/o ) {
-        my ($lhs, $op, $rhs) = ($self->find_column($1, $aliases), $2, $3);
+        my ($lhs, $op, $rhs) = ($cb->($1), $2, $3);
         ($op, $rhs) = split /\s*(?=null)/i, $op;
         return { lhs => $lhs, op => $op, rhs => $rhs };
     }
     elsif ( $string =~ /^($re_column)\s*($re_sql_op_bin)\s*($re_column)$/o ) {
-        return { lhs => $self->find_column($1, $aliases), op => $2, rhs => $self->find_column($3, $aliases) };
+        return { lhs => $cb->($1), op => $2, rhs => $cb->($3) };
     }
     else {
         die "$string is not a tisql condition";


More information about the Jifty-commit mailing list