* C<csv> - Comma-separated values (requires L<Text::CSV>)
* C<json:pretty> - Pretty JSON (requires L<JSON::MaybeXS>)
* C<json> - JSON (requires L<JSON::MaybeXS>)
-* C<table> - Table (requires L<Text::Table>)
+* C<table> - Table (requires L<Text::Table::Any>)
* C<tsv> - Tab-separated values (requires L<Text::CSV>)
* C<yaml> - YAML (requires L<YAML>)
* C<FORMAT> - Custom format (see below)
-You can specify a custom format using printf-like format sequences. These are the items that can
+=head2 Custom
+
+You can specify a custom format using printf-like format sequences. These are the items that can be
substituted:
=for :list
* C<color:FFFFFF> - Colorize the replacement string (if color is ON).
* C<nocolor> - Do not colorize replacement string.
+=head2 Table
+
+Table formatting can be done by one of several different modules, each with its own features and
+bugs. The default module is L<Text::Table::Tiny>, but this can be overridden using the
+C<PERL_TEXT_TABLE> environment variable if desired, like this:
+
+ PERL_TEXT_TABLE=Text::Table::HTML git-codeowners -f table
+
+The list of available modules is at L<Text::Table::Any/@BACKENDS>.
+
=cut
# FATPACK - Do not remove this line.
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;