promote _join_parts to public method join_clauses
[scpubgit/Q-Branch.git] / lib / SQL / Abstract / ExtraClauses.pm
index 00e4d2a..24a9dbf 100644 (file)
@@ -52,6 +52,10 @@ sub register_defaults {
       +(from => $_[0]->expand_expr({ -select => $_[1] }));
     },
   );
+
+  $self->renderer(keyword => sub {
+    $_[0]->_sqlcase(join ' ', split '_', $_[1]);
+  });
   return $self;
 }
 
@@ -109,7 +113,7 @@ sub _expand_join {
 
 sub _render_from_list {
   my ($self, $list) = @_;
-  return $self->_join_parts(', ', map [ $self->render_aqt($_) ], @$list);
+  return $self->join_clauses(', ', map [ $self->render_aqt($_) ], @$list);
 }
 
 sub _render_join {
@@ -117,27 +121,22 @@ sub _render_join {
 
   my @parts = (
     [ $self->render_aqt($args->{from}) ],
-    [ $self->_sqlcase(
-        ($args->{type}
-          ? join(' ', split '_', $args->{type}).' '
-          : ''
-        )
-        .'join'
-      )
-    ],
+    [ $self->render_aqt(
+        { -keyword => join '_', ($args->{type}||()), 'join' }
+    ) ],
     [ $self->render_aqt(
         map +($_->{-ident} || $_->{-as} ? $_ : { -row => [ $_ ] }), $args->{to}
     ) ],
     ($args->{on} ? (
-      [ $self->_sqlcase('on') ],
+      [ $self->render_aqt({ -keyword => 'on' }) ],
       [ $self->render_aqt($args->{on}) ],
     ) : ()),
     ($args->{using} ? (
-      [ $self->_sqlcase('using') ],
+      [ $self->render_aqt({ -keyword => 'using' }) ],
       [ $self->render_aqt($args->{using}) ],
     ) : ()),
   );
-  return $self->_join_parts(' ', @parts);
+  return $self->join_clauses(' ', @parts);
 }
 
 sub _expand_op_as {
@@ -150,15 +149,15 @@ sub _expand_op_as {
 sub _render_as {
   my ($self, $args) = @_;
   my ($thing, $as, @cols) = @$args;
-  return $self->_join_parts(
+  return $self->join_clauses(
     ' ',
     [ $self->render_aqt($thing) ],
-    [ $self->_sqlcase('as') ],
+    [ $self->render_aqt({ -keyword => 'as' }) ],
     (@cols
-      ? [ $self->_join_parts('',
+      ? [ $self->join_clauses('',
             [ $self->render_aqt($as) ],
             [ '(' ],
-            [ $self->_join_parts(
+            [ $self->join_clauses(
                 ', ',
                 map [ $self->render_aqt($_) ], @cols
             ) ],