[Jifty-commit] r5058 - Jifty-DBI/branches/tisql/lib/Jifty/DBI
Jifty commits
jifty-commit at lists.jifty.org
Wed Feb 6 11:13:20 EST 2008
Author: ruz
Date: Wed Feb 6 11:13:20 2008
New Revision: 5058
Modified:
Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm
Log:
* add filter_conditions_tree method
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 Wed Feb 6 11:13:20 2008
@@ -229,4 +229,37 @@
return \@res;
}
+sub filter_conditions_tree {
+ my ($self, $tree, $cb, $inner) = @_;
+
+ my $skip_next = 0;
+
+ my @res;
+ foreach my $entry ( @$tree ) {
+ next if $skip_next-- > 0;
+
+ if ( ref $entry eq 'ARRAY' ) {
+ my $tmp = $self->filter_conditions( $entry, $cb, 1 );
+ if ( !$tmp || (ref $tmp eq 'ARRAY' && !@$tmp) ) {
+ pop @res;
+ $skip_next = 1 unless @res;
+ } else {
+ push @res, $tmp;
+ }
+ } elsif ( ref $entry eq 'HASH' ) {
+ if ( $cb->( $entry ) ) {
+ push @res, $entry;
+ } else {
+ pop @res;
+ $skip_next = 1 unless @res;
+ }
+ } else {
+ push @res, $entry;
+ }
+ }
+ return $res[0] if @res == 1 && ($inner || ref $res[0] eq 'ARRAY');
+ return \@res;
+}
+
+
1;
More information about the Jifty-commit
mailing list