Further namespace cleansing
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / PerlRenderer / MangleStrings.pm
1 package DBIx::Class::PerlRenderer::MangleStrings;
2
3 use Moo;
4 use namespace::clean;
5
6 extends 'DBIx::Class::PerlRenderer';
7
8 my %string_ops = map +($_ => 1), qw(eq ne le lt ge gt);
9
10 around _handle_op_type_binop => sub {
11   my ($orig, $self) = (shift, shift);
12   my ($op_name, $dq) = @_;
13   if ($string_ops{$op_name}) {
14     require List::Util;
15     return [
16       'do {',
17         'my ($l, $r) = (',
18           $self->_render($dq->{args}[0]),
19           ',',
20           $self->_render($dq->{args}[1]),
21         ');',
22         'my $len = List::Util::max(length($l), length($r));',
23         'my ($fl, $fr) = map sprintf("%-${len}s", lc($_)), ($l, $r);',
24         '$fl '.$op_name.' $fr',
25       '}',
26     ];
27   }
28   return $self->$orig(@_);
29 };
30
31 1;