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