X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FTree.pm;h=f6076ba3881988c6f4ae957097bd23966c76f4dd;hb=1c33db5d0ccacdfc4d6028ec596b0f34a045471c;hp=daf0ae905a21d66c83648b1d9e056b8744e29915;hpb=820bb1f5b8926c8c8c4c34ed99c057abfb8fe105;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract/Tree.pm b/lib/SQL/Abstract/Tree.pm index daf0ae9..f6076ba 100644 --- a/lib/SQL/Abstract/Tree.pm +++ b/lib/SQL/Abstract/Tree.pm @@ -154,6 +154,7 @@ my %indents = ( join => 1, 'left join' => 1, on => 2, + having => 0, 'group by' => 0, 'order by' => 0, set => 1, @@ -173,43 +174,52 @@ my %profiles = ( indent_amount => 2, newline => "\n", colormap => {}, - indentmap => { %indents }, + indentmap => \%indents, eval { require Term::ANSIColor } ? do { my $c = \&Term::ANSIColor::color; + + my $red = [$c->('red') , $c->('reset')]; + my $cyan = [$c->('cyan') , $c->('reset')]; + my $green = [$c->('green') , $c->('reset')]; + my $yellow = [$c->('yellow') , $c->('reset')]; + my $blue = [$c->('blue') , $c->('reset')]; + my $magenta = [$c->('magenta'), $c->('reset')]; + my $b_o_w = [$c->('black on_white'), $c->('reset')]; ( placeholder_surround => [q(') . $c->('black on_magenta'), $c->('reset') . q(')], colormap => { - 'begin work' => [$c->('black on_white'), $c->('reset')], - commit => [$c->('black on_white'), $c->('reset')], - rollback => [$c->('black on_white'), $c->('reset')], - savepoint => [$c->('black on_white'), $c->('reset')], - 'rollback to savepoint' => [$c->('black on_white'), $c->('reset')], - 'release savepoint' => [$c->('black on_white'), $c->('reset')], - - select => [$c->('red'), $c->('reset')], - 'insert into' => [$c->('red'), $c->('reset')], - update => [$c->('red'), $c->('reset')], - 'delete from' => [$c->('red'), $c->('reset')], - - set => [$c->('cyan'), $c->('reset')], - from => [$c->('cyan'), $c->('reset')], - - where => [$c->('green'), $c->('reset')], - values => [$c->('yellow'), $c->('reset')], - - join => [$c->('magenta'), $c->('reset')], - 'left join' => [$c->('magenta'), $c->('reset')], - on => [$c->('blue'), $c->('reset')], - - 'group by' => [$c->('yellow'), $c->('reset')], - 'order by' => [$c->('yellow'), $c->('reset')], - - skip => [$c->('green'), $c->('reset')], - first => [$c->('green'), $c->('reset')], - limit => [$c->('green'), $c->('reset')], - offset => [$c->('green'), $c->('reset')], + 'begin work' => $b_o_w, + commit => $b_o_w, + rollback => $b_o_w, + savepoint => $b_o_w, + 'rollback to savepoint' => $b_o_w, + 'release savepoint' => $b_o_w, + + select => $red, + 'insert into' => $red, + update => $red, + 'delete from' => $red, + + set => $cyan, + from => $cyan, + + where => $green, + values => $yellow, + + join => $magenta, + 'left join' => $magenta, + on => $blue, + + 'group by' => $yellow, + having => $yellow, + 'order by' => $yellow, + + skip => $green, + first => $green, + limit => $green, + offset => $green, } ); } : (), @@ -221,7 +231,7 @@ my %profiles = ( indent_amount => 2, newline => "\n", colormap => {}, - indentmap => { %indents }, + indentmap => \%indents, }, html => { fill_in_placeholders => 1, @@ -246,6 +256,7 @@ my %profiles = ( on => ['' , ''], 'group by' => ['', ''], + having => ['', ''], 'order by' => ['', ''], skip => ['', ''], @@ -260,7 +271,7 @@ my %profiles = ( 'rollback to savepoint' => ['', ''], 'release savepoint' => ['', ''], }, - indentmap => { %indents }, + indentmap => \%indents, }, none => { colormap => {}, @@ -273,6 +284,9 @@ sub new { my $args = shift || {}; my $profile = delete $args->{profile} || 'none'; + + die "No such profile '$profile'!" unless exists $profiles{$profile}; + my $data = $merger->merge( $profiles{$profile}, $args ); bless $data, $class