From: Matt S Trout <mst@shadowcat.co.uk>
Date: Thu, 20 Sep 2018 21:21:21 +0000 (+0000)
Subject: make node_types a (currently unexposed) hashref
X-Git-Tag: v2.000000~3^2~440
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=9e1d0a21d031c648632b678ce2e8d46df0263435;p=dbsrgits%2FSQL-Abstract.git

make node_types a (currently unexposed) hashref
---

diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm
index e0d80f0..c2ab787 100644
--- a/lib/SQL/Abstract.pm
+++ b/lib/SQL/Abstract.pm
@@ -176,6 +176,11 @@ sub new {
     ^ \s* go \s
   /xmi;
 
+  $opt{node_types} = +{
+    map +("-$_" => '_render_'.$_),
+      qw(op func value bind ident literal)
+  };
+
   return bless \%opt, $class;
 }
 
@@ -596,7 +601,7 @@ sub _expand_expr_hashpair {
     if ($k eq '-value' and my $m = our $Cur_Col_Meta) {
       return +{ -bind => [ $m, $v ] };
     }
-    if ($k eq '-op' or $k eq '-ident' or $k eq '-value' or $k eq '-bind' or $k eq '-literal' or $k eq '-func') {
+    if ($self->{node_types}{$k}) {
       return { $k => $v };
     }
     if (my $custom = $self->{custom_expansions}{($k =~ /^-(.*)$/)[0]}) {
@@ -830,9 +835,7 @@ sub _render_expr {
   my ($self, $expr) = @_;
   my ($k, $v, @rest) = %$expr;
   die "No" if @rest;
-  my %op = map +("-$_" => '_render_'.$_),
-    qw(op func value bind ident literal);
-  if (my $meth = $op{$k}) {
+  if (my $meth = $self->{node_types}{$k}) {
     return $self->$meth($v);
   }
   die "notreached: $k";