SQL::Abstract::Tree - Represent SQL as an AST
my $sqla_tree = SQL::Abstract::Tree->new({ profile => 'console' });
print $sqla_tree->format('SELECT * FROM foo WHERE foo.a > 2');
# SELECT *
# FROM foo
# WHERE foo.a > 2
my $sqla_tree = SQL::Abstract::Tree->new({ profile => 'console' });
$args = {
profile => 'console', # predefined profile to use (default: 'none')
fill_in_placeholders => 1, # true for placeholder population
placeholder_surround => # The strings that will be wrapped around
[GREEN, RESET], # populated placeholders if the above is set
indent_string => ' ', # the string used when indenting
indent_amount => 2, # how many of above string to use for a single
# indent level
newline => "\n", # string for newline
colormap => {
select => [RED, RESET], # a pair of strings defining what to surround
# the keyword with for colorization
# ...
},
indentmap => {
select => 0, # A zero means that the keyword will start on
# a new line
from => 1, # Any other positive integer means that after
on => 2, # said newline it will get that many indents
# ...
},
}
Returns a new SQL::Abstract::Tree object. All arguments are optional.
There are four predefined profiles, none
, console
, console_monochrome
, and html
. Typically a user will probably just use console
or console_monochrome
, but if something about a profile bothers you, merely use the profile and override the parts that you don't like.
$sqlat->format('SELECT * FROM bar WHERE x = ?', [1])
Takes $sql
and \@bindargs
.
Returns a formatting string based on the string passed in
$sqlat->parse('SELECT * FROM bar WHERE x = ?')
Returns a "tree" representing passed in SQL. Please do not depend on the structure of the returned tree. It may be stable at some point, but not yet.
$sqlat->unparse($tree_structure, \@bindargs)
Transform "tree" into SQL, applying various transforms on the way.
$sqlat->format_keyword('SELECT')
Currently this just takes a keyword and puts the colormap
stuff around it. Later on it may do more and allow for coderef based transforms.
my ($before, $after) = @{$sqlat->pad_keyword('SELECT')};
Returns whitespace to be inserted around a keyword.
my $value = $sqlat->fill_in_placeholder(\@bindargs)
Removes last arg from passed arrayref and returns it, surrounded with the values in placeholder_surround, and then surrounded with single quotes.
Returns as many indent strings as indent amounts times the first argument.
See "new"
See "new"
See "new"
See "new"
See "new"
See "new"
See "new"