[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