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;
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;
# 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}";
}