Provided by: libcatmandu-perl_0.9505-1_all 

NAME
Catmandu::Importer - Namespace for packages that can import
SYNOPSIS
package Catmandu::Importer::Hello;
use Catmandu::Sane;
use Moo;
with 'Catmandu::Importer';
sub generator {
my ($self) = @_;
state $fh = $self->fh;
my $n = 0;
return sub {
$self->log->debug("generating record " . ++$n);
my $name = $self->readline;
return defined $name ? { "hello" => $name } : undef;
};
}
package main;
use Catmandu;
my $importer = Catmandu->importer('Hello', file => '/tmp/names.txt');
$importer->each(sub {
my $items = shift;
.
.
.
});
# Or on the command line
$ catmandu convert Hello to YAML < /tmp/names.txt
# Fetch remote content
$ catmandu convert JSON --file http://example.com/data.json to YAML
DESCRIPTION
A Catmandu::Importer is a Perl package that can import data from an external source (a file, the network,
...). Most importers read from an input stream, such as STDIN, a given file, or an URL to fetch data
from, so this base class provides helper method for consuming the input stream once.
Every Catmandu::Importer is a Catmandu::Fixable and thus inherits a 'fix' parameter that can be set in
the constructor. When given then each item returned by the generator will be automatically Fixed using
one or more Catmandu::Fixes. E.g.
my $importer = Catmandu->importer('Hello',fix => ['upcase(hello)']);
$importer->each( sub {
my $item = shift ; # Every item will be upcased...
} );
Every Catmandu::Importer is a Catmandu::Iterable and inherits the methods ("first", "each",
"to_array"...) etc.
CONFIGURATION
file
Read input from a local file given by its path. If the path looks like a url, the content will be
fetched first and then passed to the importer. Alternatively a scalar reference can be passed to
read from a string.
fh Read input from an IO::Handle. If not specified, Catmandu::Util::io is used to create the input
stream from the "file" argument or by using STDIN.
encoding
Binmode of the input stream "fh". Set to ":utf8" by default.
fix An ARRAY of one or more fixes or file scripts to be applied to imported items.
data_path
The data at "data_path" is imported instead of the original data.
# given this imported item:
{abc => [{a=>1},{b=>2},{c=>3}]}
# with data_path 'abc', this item gets imported instead:
[{a=>1},{b=>2},{c=>3}]
# with data_path 'abc.*', 3 items get imported:
{a=>1}
{b=>2}
{c=>3}
variables
Variables given here will interpolate the "file" and "http_body" options. The syntax is the same as
URI::Template.
# named arguments
my $importer = Catmandu->importer('Hello',
file => 'http://example.com/{id}',
variables => {id => 1234},
);
# positional arguments
{variables => "1234,768"}
# or
{variables => [1234,768]}
HTTP CONFIGURATION
These options are only relevant if "file" is a url. See LWP::UserAgent for details about these options.
http_method
http_headers
http_agent
http_max_redirect
http_timeout
http_verify_hostname
METHODS
readline
Read a line from the input stream. Equivalent to "$importer->fh->getline".
readall
Read the whole input stream as string.
first, each, rest , ...
See Catmandu::Iterable for all inherited methods.
SEE ALSO
Catmandu::Iterable , Catmandu::Fix , Catmandu::Importer::CSV, Catmandu::Importer::JSON ,
Catmandu::Importer::YAML
perl v5.22.1 2016-02-09 Catmandu::Importer(3pm)