Commit | Line | Data |
b3b54441 |
1 | package SQL::Abstract::Formatter; |
2 | |
3 | require SQL::Abstract::Parts; # it loads us too, don't cross the streams |
4 | |
5 | use Moo; |
6 | |
7 | has indent_by => (is => 'ro', default => ' '); |
8 | has max_width => (is => 'ro', default => 78); |
9 | |
10 | sub _join { |
11 | shift; |
12 | SQL::Abstract::Parts::stringify(\@_); |
13 | } |
14 | |
15 | sub 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); |
20 | return join("\n", map $self->format(@$_), @parts); |
21 | } |
22 | |
23 | 1; |