This is an automated email from the git hooks/post-receive script. js pushed a commit to tag 0.91 in repository libcatmandu-perl.
commit 1e0053c513195890839827e26d00e04f4d24c04e Merge: 43d4de7 198d750 Author: Patrick Hochstenbach <patrick.hochstenb...@ugent.be> Date: Mon May 19 18:53:27 2014 +0200 Merge branch 'pr/importer' of https://github.com/nichtich/Catmandu into nichtich-pr/importer Conflicts: lib/Catmandu/Importer.pm META.json | 2 +- lib/Catmandu/Importer.pm | 121 ++++++++++++++++++++++++++++++----------------- t/Catmandu-Importer.t | 18 ++++++- 3 files changed, 95 insertions(+), 46 deletions(-) diff --cc META.json index 6c71e0c,0000000..428d30e mode 100644,000000..100644 --- a/META.json +++ b/META.json @@@ -1,132 -1,0 +1,132 @@@ +{ + "abstract" : "a data toolkit", + "author" : [ + "Nicolas Steenlant, C<< <nicolas.steenlant at ugent.be> >>" + ], + "dynamic_config" : 0, - "generated_by" : "Dist::Milla version v1.0.5, Dist::Zilla version 5.016, CPAN::Meta::Converter version 2.132830", ++ "generated_by" : "Dist::Milla version v1.0.5, Dist::Zilla version 5.016, CPAN::Meta::Converter version 2.141170", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Catmandu", + "no_index" : { + "directory" : [ + "t", + "xt", + "inc", + "share", + "eg", + "examples" + ] + }, + "optional_features" : { + "tidy" : { + "description" : "Support pretty printing compiled fix code", + "prereqs" : { + "runtime" : { + "requires" : { + "Perl::Tidy" : "0" + } + } + } + } + }, + "prereqs" : { + "build" : { + "requires" : { + "Module::Build" : "0.3601" + } + }, + "configure" : { + "requires" : { + "Module::Build" : "0.3601" + } + }, + "develop" : { + "requires" : { + "Test::Pod" : "1.41" + } + }, + "runtime" : { + "recommends" : { + "JSON::XS" : "2.3", + "YAML::XS" : "0.34" + }, + "requires" : { + "App::Cmd" : "0.323", + "CGI::Expand" : "2.02", + "Clone" : "0.31", + "Config::Onion" : "1.004", + "Data::Compare" : "1.22", + "Data::UUID" : "1.217", + "Data::Util" : "0.59", + "IO::Handle::Util" : "0.01", + "JSON" : "2.51", + "List::MoreUtils" : "0.33", + "Log::Any::Adapter" : "0.11", + "Marpa::R2" : "2.084000", + "Moo" : "1.000008", + "MooX::Log::Any" : "0", + "Sub::Exporter" : "0.982", + "Sub::Quote" : "0", + "Text::CSV" : "1.21", + "Throwable" : "0.200004", + "Time::HiRes" : "0", + "Try::Tiny::ByClass" : "0.01", + "YAML::Any" : "0.90", + "namespace::clean" : "0.24", + "perl" : "v5.10.1" + } + }, + "test" : { + "requires" : { + "Log::Any::Adapter" : "0.11", + "Log::Any::Test" : "0.15", + "Test::Deep" : "0.112", + "Test::Exception" : "0.32", + "Test::More" : "1.001003" + } + } + }, + "release_status" : "stable", + "resources" : { + "bugtracker" : { + "web" : "https://github.com/LibreCat/Catmandu/issues" + }, + "homepage" : "https://github.com/LibreCat/Catmandu", + "repository" : { + "type" : "git", + "url" : "https://github.com/LibreCat/Catmandu.git", + "web" : "https://github.com/LibreCat/Catmandu" + } + }, + "version" : "0.9", + "x_contributors" : [ + "Christian Pietsch <chr.pietsch+git...@googlemail.com>", + "Dave Sherohman <dave.sheroh...@lub.lu.se>", + "Dave Sherohman <dave.sheroh...@ub.lu.se>", + "EC2 Default User <ec2-user@ip-10-113-18-155.ec2.internal>", + "EC2 Default User <ec2-user@ip-10-114-199-125.ec2.internal>", + "EC2 Default User <ec2-user@ip-10-194-230-16.ec2.internal>", + "EC2 Default User <ec2-user@ip-10-77-5-148.ec2.internal>", + "Jakob Voss <ja...@nichtich.de>", + "Jakob Voss <v...@gbv.de>", + "Nicolas <nicolas.steenl...@ugent.be>", + "Nicolas Franck <nicolas.fra...@ugent.be>", + "Nicolas Steenlant <nicolas.steenl...@gmail.com>", + "Nicolas Steenlant <nicolas.steenl...@ugent.be>", + "Nicolas Steenlant <nstee...@ca20c608.ugent.be>", + "Nicolas Steenlnat <nicolas.steenl...@ugent.be>", + "Patrick <phoch...@hal.lub.lu.se>", + "Snorri Briem <snorri.br...@lub.lu.se>", + "Snorri Briem <snorri.br...@ub.lu.se>", + "Vitali Peil <vitali.p...@uni-bielefeld.de>", + "phochste <phoch...@vmtemp4.ugent.be>", + "vpeil <vitali.p...@uni-bielefeld.de>" + ] +} + diff --cc lib/Catmandu/Importer.pm index 8915e9a,6fc0fc3..557df30 --- a/lib/Catmandu/Importer.pm +++ b/lib/Catmandu/Importer.pm @@@ -45,72 -58,66 +58,94 @@@ Catmandu::Importer - Namespace for pack =head1 SYNOPSIS - use Catmandu::Importer::JSON; + 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; + - my $importer = Catmandu::Importer::JSON->new(file => "/foo/bar.json"); ++ use Catmandu; + - my $n = $importer->each(sub { - my $hashref = $_[0]; - # ... ++ 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 ++ + =head1 DESCRIPTION - A Catmandu::Importer is a stub for Perl packages that can import data from - an external source (a file, the network, ...). -A Catmandu::Importer is a Perl packages that can import data from an external ++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 L<Catmandu::Fixable> and thus provides a 'fix' --parameter that can be set in the constructor. For every item returned by the --generator the given fixes will be applied first. ++Every Catmandu::Importer is a L<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 L<Catmandu::Fix>es. ++E.g. ++ ++ my $importer = Catmandu::Importer::Hello->new(fix => ['upcase(hello)']); ++ $importer->each( sub { ++ my $item = shift ; # Every item will be upcased... ++ } ); - =head1 METHODS -Every Catmandu::Importer is a L<Catmandu::Iterable> and its methods (C<first>, -C<each>, C<to_array>...) should be used to access items from the importer. ++Every Catmandu::Importer is a L<Catmandu::Iterable> and inherits the methods (C<first>, ++C<each>, C<to_array>...) etc. - =head2 new(file => $file , encoding => $encoding ) + =head1 CONFIGURATION - Create a new importer reading input from a local file: $file is a string containing the path to - the file. + =over - =head2 new(fh => $fh , encoding => $encoding) + =item file - Create a new importer by reading from a IO::Handle. Optionally use Catmandu::Util::io to create IO::Handles. + Read input from a local file given by its path. Alternatively a scalar + reference can be passed to read from a string. - =head2 count + =item fh - =head2 each(&callback) + Read input from an L<IO::Handle>. If not specified, L<Catmandu::Util::io> is used to + create the input stream from the C<file> argument or by using STDIN. - =head2 ... + =item encoding - Every Catmandu::Importer is a L<Catmandu::Iterable> all its methods are inherited. + Binmode of the input stream C<fh>. Set to C<:utf8> by default. - =head2 log + =back - Return the current logger. Can be used when creating your own Importers. + =head1 METHODS - E.g. - - package Catmandu::Importer::Mock; + =head2 readline - use namespace::clean; - use Catmandu::Sane; - use Moo; + Read a line from the input stream. Equivalent to C<< $importer->fh->getline >>. - with 'Catmandu::Importer'; + =head2 readall - has size => (is => 'ro'); + Read the whole input stream as string. - sub generator { - my ($self) = @_; - my $n = 0; - sub { - $self->log->debug("generating record $n"); - return if defined $self->size && $n == $self->size; - return { n => $n++ }; - }; - } ++=head2 first, each, rest , ... + - See also: L<Catmandu> for activating the logger in your main code. ++See L<Catmandu::Iterable> for all inherited methods. + =head1 SEE ALSO L<Catmandu::Iterable> , L<Catmandu::Util> -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libcatmandu-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits