This is an automated email from the git hooks/post-receive script. js pushed a commit to branch master in repository libcatmandu-rdf-perl.
commit e85ab8cd8be5d4a3594bd52d607a83e19b766a47 Author: Jakob Voss <[email protected]> Date: Tue Oct 14 12:52:55 2014 +0200 aref_query fix --- Changes | 2 ++ META.json | 4 ++-- cpanfile | 2 +- lib/Catmandu/Fix/aref_query.pm | 45 ++++++++++++++++++++++++++++++++++++++++++ lib/Catmandu/Importer/RDF.pm | 5 +++++ lib/Catmandu/RDF.pm | 2 +- t/fix-aref-query.t | 24 ++++++++++++++++++++++ 7 files changed, 80 insertions(+), 4 deletions(-) diff --git a/Changes b/Changes index c8dddf1..1e4411b 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,8 @@ Changelog for Catmandu-RDF {{$NEXT}} + - add field _url on import from url (issue #9) + - started fix function aref_query 0.17 2014-10-02 14:26:35 CEST - Migrate to Dist::Milla diff --git a/META.json b/META.json index 4a258f7..0b5da74 100644 --- a/META.json +++ b/META.json @@ -40,7 +40,7 @@ "Catmandu" : "0.9", "RDF::NS" : "20140910", "RDF::Trine" : "1.0", - "RDF::aREF" : "0.14" + "RDF::aREF" : "0.18" } } }, @@ -56,7 +56,7 @@ "web" : "https://github.com/gbv/Catmandu-RDF" } }, - "version" : "0.17", + "version" : "0.18", "x_contributors" : [ "Jakob Voss <[email protected]>" ] diff --git a/cpanfile b/cpanfile index a43c378..2f4fca9 100644 --- a/cpanfile +++ b/cpanfile @@ -1,4 +1,4 @@ requires 'Catmandu', '0.9'; requires 'RDF::Trine', '1.0'; requires 'RDF::NS', '20140910'; -requires 'RDF::aREF', '0.14'; +requires 'RDF::aREF', '0.18'; diff --git a/lib/Catmandu/Fix/aref_query.pm b/lib/Catmandu/Fix/aref_query.pm new file mode 100644 index 0000000..64e2616 --- /dev/null +++ b/lib/Catmandu/Fix/aref_query.pm @@ -0,0 +1,45 @@ +package Catmandu::Fix::aref_query; + +use Catmandu::Sane; +use Moo; +use RDF::aREF::Query; + +has query => ( + is => 'ro', + coerce => sub { + RDF::aREF::Query->new( query => $_[0] ) + # TODO: ns + } +); +has field => (is => 'ro'); + +sub fix { + my ($self, $data) = @_; + + my $field = $self->field; + my $origin = $data->{_uri} // $data->{_url}; + my @values = $self->query->apply( $data, $origin ); + + if (@values) { + if (defined $data->{$field}) { + if (ref $data->{$field}) { + push @{$data->{$field}}, @values; + } else { + $data->{$field} = [ $data->{$field}, @values ]; + } + } else { + $data->{$field} = @values > 1 ? \@values : $values[0]; + } + } + + $data; +} + +1; +__END__ + +=head1 NAME + +Catmandu::Fix::aref_query + +=cut diff --git a/lib/Catmandu/Importer/RDF.pm b/lib/Catmandu/Importer/RDF.pm index 683d25b..4c76098 100644 --- a/lib/Catmandu/Importer/RDF.pm +++ b/lib/Catmandu/Importer/RDF.pm @@ -54,6 +54,11 @@ sub generator { } } $aref = $stream; + + if ($self->url) { + $aref->{_url} = $self->url; + } + $stream = undef; return $aref; diff --git a/lib/Catmandu/RDF.pm b/lib/Catmandu/RDF.pm index 07092dd..72e1dc6 100644 --- a/lib/Catmandu/RDF.pm +++ b/lib/Catmandu/RDF.pm @@ -6,7 +6,7 @@ use Catmandu::Util qw(is_instance); use Moo::Role; use RDF::NS; -our $VERSION = '0.17'; +our $VERSION = '0.18'; our %TYPE_ALIAS = ( Ttl => 'Turtle', diff --git a/t/fix-aref-query.t b/t/fix-aref-query.t new file mode 100644 index 0000000..c95d5fb --- /dev/null +++ b/t/fix-aref-query.t @@ -0,0 +1,24 @@ +use strict; +use warnings; +use Test::More; +use Catmandu ':all'; + +use_ok 'Catmandu::Fix::aref_query'; + +my $fixer = Catmandu::Fix::aref_query->new( + field => 'title', + query => 'dc_title' +); + +my $rdf = importer('RDF', file => 't/example.ttl')->first; +($rdf->{_uri}) = keys $rdf; + +$fixer->fix( $rdf ); +delete $rdf->{ $rdf->{_uri} }; + +is_deeply $rdf, { + '_uri' => 'http://example.org', + title => 'BAR' +}, 'simple RDF fix'; + +done_testing; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libcatmandu-rdf-perl.git _______________________________________________ Pkg-perl-cvs-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
