X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=lib%2FApp%2FCodeowners.pm;h=113a3a10b4140daec443061731b8868258af9770;hb=e3541feec258bc63e2cf5ac387e264816a4bf278;hp=eebe058be5e9e61a1d6ecb29e0f8f8a4f406b698;hpb=67e86f990f2556f12465052911eb7b96a03b8dcc;p=chaz%2Fgit-codeowners diff --git a/lib/App/Codeowners.pm b/lib/App/Codeowners.pm index eebe058..113a3a1 100644 --- a/lib/App/Codeowners.pm +++ b/lib/App/Codeowners.pm @@ -174,11 +174,14 @@ sub _format { my $rows = $args{rows} || []; if ($format eq 'table') { - eval { require Text::Table } or die "Missing dependency: Text::Table\n"; + eval { require Text::Table::Any } or die "Missing dependency: Text::Table::Any\n"; - my $table = Text::Table->new(@$headers); - $table->load(map { [map { _stringify($_) } @$_] } @$rows); - print { $fh } encode('UTF-8', "$table"); + my $table = Text::Table::Any::table( + header_row => 1, + rows => [$headers, map { [map { _stringify($_) } @$_] } @$rows], + backend => $ENV{PERL_TEXT_TABLE}, + ); + print { $fh } encode('UTF-8', $table); } elsif ($format =~ /^json(:pretty)?$/) { my $pretty = !!$1; @@ -275,7 +278,7 @@ sub _expand_filter_args { for (my $i = 0; $i < @filters; ++$i) { my $filter = $filters[$i] or next; - if ($filter =~ /^(?:nocolor|color:([0-9a-fA-F]{6}))$/) { + if ($filter =~ /^(?:nocolor|color:([0-9a-fA-F]{3,6}))$/) { $color_override = $1 || ''; splice(@filters, $i, 1); redo; @@ -292,6 +295,12 @@ sub _colored { # ansifg honors NO_COLOR already, but ansi_reset does not. return $text if $ENV{NO_COLOR}; + $rgb =~ s/^(.)(.)(.)$/$1$1$2$2$3$3/; + if ($rgb !~ m/^[0-9a-fA-F]{6}$/) { + warn "Color value must be in 'ffffff' or 'fff' form.\n"; + return $text; + } + my ($begin, $end) = (ansifg($rgb), ansi_reset); return "${begin}${text}${end}"; }