factor construction of simple expressions out into ExprHelpers.pm
[dbsrgits/Data-Query.git] / lib / Data / Query / ExprBuilder.pm
index ee30702..0c8ee7b 100644 (file)
@@ -1,8 +1,8 @@
 package Data::Query::ExprBuilder;
 
 use strictures 1;
-use Data::Query::Constants qw(DQ_OPERATOR DQ_VALUE);
 use Scalar::Util ();
+use Data::Query::ExprHelpers qw(perl_scalar_value perl_operator);
 
 use overload (
   # unary operators
@@ -10,11 +10,7 @@ use overload (
     my $op = $_;
     $op => sub {
       Data::Query::ExprBuilder->new({
-        expr => {
-          type => DQ_OPERATOR,
-          operator => { Perl => $op },
-          args => [ $_[0]->{expr} ]
-        }
+        expr => perl_operator($op => $_[0]->{expr})
       });
     }
   } qw(! neg)),
@@ -23,23 +19,16 @@ use overload (
     my ($overload, $as) = ref($_) ? @$_ : ($_, $_);
     $overload => sub {
       Data::Query::ExprBuilder->new({
-        expr => {
-          type => DQ_OPERATOR,
-          operator => { Perl => $as },
-          args => [
+        expr => perl_operator(
+           $as,
            map {
              (Scalar::Util::blessed($_)
              && $_->isa('Data::Query::ExprBuilder'))
                ? $_->{expr}
-               : {
-                   type => DQ_VALUE,
-                   subtype => { Perl => 'Scalar' },
-                   value => $_
-                 }
+               : perl_scalar_value($_)
               # we're called with ($left, $right, 0) or ($right, $left, 1)
             } $_[2] ? @_[1,0] : @_[0,1]
-          ]
-        },
+          )
       });
     }
   }