1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
package Catmandu::Exporter::TSV;
use Catmandu::Sane;
our $VERSION = '1.2020';
use Catmandu::Exporter::CSV;
use Moo;
use namespace::clean;
has sep_char => (is => 'ro', default => sub {"\t"},);
has csv => (is => 'lazy', handles => [qw(add)]);
with 'Catmandu::TabularExporter';
sub _build_csv {
my ($self) = @_;
my $csv = Catmandu::Exporter::CSV->new(
header => $self->header,
collect_fields => $self->collect_fields,
sep_char => $self->sep_char,
quote_char => undef,
escape_char => undef,
file => $self->file,
);
$csv->{fields} = $self->fields;
$csv->{columns} = $self->columns;
$csv;
}
1;
__END__
=pod
=head1 NAME
Catmandu::Exporter::TSV - a tab-delimited TSV exporter
=head1 SYNOPSIS
# From the command line
$ catmandu convert JSON to TSV --fields "id,title,year" < data.json
# In a Perl script
use Catmandu;
my $exporter = Catmandu->exporter(
'TSV',
fix => 'myfix.txt',
fields => "f1,f2,f3",
header => 1);
my $exporter = Catmandu->exporter(
'TSV',
fields => [qw(f1 f2 f3)]);
$exporter->add_many($arrayref);
$exporter->add_many($iterator);
$exporter->add_many(sub { });
$exporter->add($hashref);
printf "exported %d items\n" , $exporter->count;
=head1 DESCRIPTION
This C<Catmandu::Exporter> exports items as rows with tab-separated values
(TSV). A header line with field names will be included if option C<header> is
set. See L<Catmandu::TabularExporter> on how to configure the field mapping
and column names. Newlines and tabulator values in field values are escaped
as C<\n>, C<\r>, and C<\t>.
=head1 CONFIGURATION
=over
=item file
Write output to a local file given by its path or file handle. Alternatively a
scalar reference can be passed to write to a string and a code reference can be
used to write to a callback function.
=item fh
Write the output to an L<IO::Handle>. If not specified,
L<Catmandu::Util::io|Catmandu::Util/IO-functions> is used to create the output
handle from the C<file> argument or by using STDOUT.
=item fix
An ARRAY of one or more fixes or file scripts to be applied to exported items.
=item encoding
Binmode of the output stream C<fh>. Set to "C<:utf8>" by default.
=item fields
See L<Catmandu::TabularExporter>.
=item columns
See L<Catmandu::TabularExporter>.
=item header
Include a header line with column names. Enabled by default.
=item sep_char
Column separator (C<tab> by default)
=back
=head1 METHODS
See L<Catmandu::TabularExporter>, L<Catmandu::Exporter>, L<Catmandu::Addable>,
L<Catmandu::Fixable>, L<Catmandu::Counter>, and L<Catmandu::Logger> for a full
list of methods.
=head1 SEE ALSO
L<Catmandu::Importer::TSV>
=cut
|