]> Dogcows Code - chaz/git-codeowners/blobdiff - lib/App/Codeowners.pm
use Text::Table::Any for table formatting
[chaz/git-codeowners] / lib / App / Codeowners.pm
index eebe058be5e9e61a1d6ecb29e0f8f8a4f406b698..113a3a10b4140daec443061731b8868258af9770 100644 (file)
@@ -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}";
 }
This page took 0.022549 seconds and 4 git commands to generate.