$opt{expand} = {
-ident => '_expand_ident',
- -value => sub { +{ -bind => [ our $Cur_Col_Meta, $_[2] ] } },
+ -value => '_expand_value',
+ -not => '_expand_not',
+ -bool => sub {
+ my ($self, undef, $v) = @_;
+ if (ref($v)) {
+ return $self->_expand_expr($v);
+ }
+ puke "-bool => undef not supported" unless defined($v);
+ return $self->_expand_ident(-ident => $v);
+ },
};
return bless \%opt, $class;
}
return $self->_expand_expr($v);
}
- if ($k eq '-bool') {
- if (ref($v)) {
- return $self->_expand_expr($v);
- }
- puke "-bool => undef not supported" unless defined($v);
- return $self->_expand_ident(-ident => $v);
- }
- if ($k eq '-not') {
- return { -op => [ 'not', $self->_expand_expr($v) ] };
- }
if (my ($rest) = $k =~/^-not[_ ](.*)$/) {
return +{ -op => [
'not',
return +{ -ident => \@parts };
}
+sub _expand_value {
+ +{ -bind => [ our $Cur_Col_Meta, $_[2] ] };
+}
+
+sub _expand_not {
+ +{ -op => [ 'not', $_[0]->_expand_expr($_[2]) ] };
+}
+
sub _recurse_where {
my ($self, $where, $logic) = @_;