X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FTree.pm;h=0cd92ff87b267a479e57edc1207634e90834492c;hb=75c3a063a606faba914d602470bfa67a3fb7006e;hp=49dbe0427b0a0e175938a55e27473eba7c0e4068;hpb=ca8aec12713041e536fd9e71194e63abfc6aba1e;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract/Tree.pm b/lib/SQL/Abstract/Tree.pm index 49dbe04..0cd92ff 100644 --- a/lib/SQL/Abstract/Tree.pm +++ b/lib/SQL/Abstract/Tree.pm @@ -70,7 +70,27 @@ my $tokenizer_re = qr/ \s* ( $tokenizer_re_str | \( | \) | \? ) \s* /xi; sub _binary_op_keywords { @binary_op_keywords } -sub new { bless sub {}, shift } +my %profiles = ( + console => { + indent => ' ', + indent_amount => 2, + newline => "\n", + }, + none => { + indent => '', + indent_amount => 0, + newline => '', + }, +); + +sub new { + my ($class, $args) = @_; + + my $profile = delete $args->{profile} || 'none'; + my $data = {%{$profiles{$profile}}, %{$args||{}}}; + + bless $data, $class +} sub parse { my ($self, $s) = @_; @@ -202,9 +222,12 @@ sub whitespace { return [$before, $after]; } -sub newline { "\n" } +sub _newline { $_[0]->{newline} } +sub _indent { $_[0]->{indent} } +sub _indent_amount { $_[0]->{indent_amount} } +sub newline { $_[0]->_newline } -sub indent { ' ' x $_[1] } +sub indent { $_[0]->_indent x $_[0]->_indent_amount x $_[1] } sub _is_select { my $tree = shift;