make cast expander stable
[scpubgit/Q-Branch.git] / lib / SQL / Abstract / Formatter.pm
CommitLineData
b3b54441 1package SQL::Abstract::Formatter;
2
3require SQL::Abstract::Parts; # it loads us too, don't cross the streams
4
5use Moo;
6
7has indent_by => (is => 'ro', default => ' ');
8has max_width => (is => 'ro', default => 78);
9
10sub _join {
11 shift;
12 SQL::Abstract::Parts::stringify(\@_);
13}
14
15sub format {
16 my ($self, $join, @parts) = @_;
b3b54441 17 my $sql = $self->_join($join, @parts);
18 return $sql unless length($sql) > $self->max_width;
19 local $self->{max_width} = $self->{max_width} - length($self->indent_by);
7c4d227d 20 return join("\n", map ref() ? $self->format(@$_) : $_, @parts);
b3b54441 21}
22
231;