This is an automated email from the git hooks/post-receive script. js pushed a commit to branch master in repository libcatmandu-perl.
commit 0bb54f016c52471a17b6216e61428151160f6cce Author: njfranck <njfra...@ca20c521.ugent.be> Date: Tue Nov 17 12:20:03 2015 +0100 fixes url_encode and url_decode --- cpanfile | 2 ++ lib/Catmandu/Fix/url_decode.pm | 40 +++++++++++++++++++++++++++++++++++++ lib/Catmandu/Fix/url_encode.pm | 41 ++++++++++++++++++++++++++++++++++++++ t/Catmandu-Fix-url_decode.t | 24 ++++++++++++++++++++++ t/Catmandu-Fix-url_encode.t | 24 ++++++++++++++++++++++ t/Catmandu-Fix-url_encode_decode.t | 32 +++++++++++++++++++++++++++++ 6 files changed, 163 insertions(+) diff --git a/cpanfile b/cpanfile index 8085d93..f578783 100644 --- a/cpanfile +++ b/cpanfile @@ -39,7 +39,9 @@ requires 'Try::Tiny::ByClass', '0.01'; requires 'URI', 0; requires 'URI::Template', 0; requires 'YAML::XS', '0.41'; +requires 'URL::Encode','0'; +recommends 'URL::Encode::XS','0'; recommends 'Log::Log4perl', '1.44'; recommends 'Log::Any::Adapter::Log4perl', '0.06'; diff --git a/lib/Catmandu/Fix/url_decode.pm b/lib/Catmandu/Fix/url_decode.pm new file mode 100644 index 0000000..a6ec8d9 --- /dev/null +++ b/lib/Catmandu/Fix/url_decode.pm @@ -0,0 +1,40 @@ +package Catmandu::Fix::url_decode; +use Catmandu::Sane; +use Moo; +use Catmandu::Fix::Has; +use URL::Encode; + +has path => (fix_arg => 1); + +with 'Catmandu::Fix::SimpleGetValue'; + +sub emit_value { + my ($self, $var) = @_; + "${var} = URL::Encode::url_decode_utf8( ${var} );"; +} + +1; + +=pod + +=head1 NAME + +Catmandu::Fix::url_decode - url decode a string + +=head1 SYNOPSIS + + # '3%A9' => 'café' + url_decode(place) + + # '%E1%BD%81+%CF%84%E1%BF%B6%CE%BD+%CE%A0%CE%AD%CF%81%CF%83%CF%89%CE%BD+%CE%B2%CE%B1%CF%83%CE%B9%CE%BB%CE%B5%CF%8D%CF%82' => 'ὁ τῶν Πέρσων βασιλεύς' + url_decode(title) + +=head1 SEE ALSO + +L<Catmandu::Fix>, L<Catmandu::Fix::url_encode>, L<URL::Encode> + +=head1 AUTHOR + +Nicolas Franck, C<< <nicolas.franck at ugent.be> >> + +=cut diff --git a/lib/Catmandu/Fix/url_encode.pm b/lib/Catmandu/Fix/url_encode.pm new file mode 100644 index 0000000..af64afd --- /dev/null +++ b/lib/Catmandu/Fix/url_encode.pm @@ -0,0 +1,41 @@ +package Catmandu::Fix::url_encode; +use Catmandu::Sane; +use Moo; +use Catmandu::Fix::Has; +use URL::Encode; + +has path => (fix_arg => 1); + +with 'Catmandu::Fix::SimpleGetValue'; + +sub emit_value { + my ($self, $var) = @_; + "${var} = URL::Encode::url_encode_utf8( ${var} );"; +} + +1; + +=pod + +=head1 NAME + +Catmandu::Fix::url_encode - url encode a string + +=head1 SYNOPSIS + + # 'café' => '3%A9' + url_encode(place) + + # 'ὁ τῶν Πέρσων βασιλεύς' => '%E1%BD%81+%CF%84%E1%BF%B6%CE%BD+%CE%A0%CE%AD%CF%81%CF%83%CF%89%CE%BD+%CE%B2%CE%B1%CF%83%CE%B9%CE%BB%CE%B5%CF%8D%CF%82' + url_encode(title) + +=head1 SEE ALSO + +L<Catmandu::Fix>, L<Catmandu::Fix::url_decode>, L<URL::Encode> + +=head1 AUTHOR + +Nicolas Franck, C<< <nicolas.franck at ugent.be> >> + +=cut + diff --git a/t/Catmandu-Fix-url_decode.t b/t/Catmandu-Fix-url_decode.t new file mode 100644 index 0000000..6779e79 --- /dev/null +++ b/t/Catmandu-Fix-url_decode.t @@ -0,0 +1,24 @@ +#!/usr/bin/env perl +use utf8; +use strict; +use warnings; +use Test::More; +use Test::Exception; + +my $pkg; +BEGIN { + $pkg = 'Catmandu::Fix::url_decode'; + use_ok $pkg; +} + +is_deeply + $pkg->new('name')->fix({name => 'caf%C3%A9'}), + {name => "café"}, + "unescape utf8 string from French"; + +is_deeply + $pkg->new('name')->fix({name => '%E1%BD%81+%CF%84%E1%BF%B6%CE%BD+%CE%A0%CE%AD%CF%81%CF%83%CF%89%CE%BD+%CE%B2%CE%B1%CF%83%CE%B9%CE%BB%CE%B5%CF%8D%CF%82'}), + {name => "ὁ τῶν Πέρσων βασιλεύς"}, + "unescape utf8 string from Greek"; + +done_testing 3; diff --git a/t/Catmandu-Fix-url_encode.t b/t/Catmandu-Fix-url_encode.t new file mode 100644 index 0000000..ae1d3d1 --- /dev/null +++ b/t/Catmandu-Fix-url_encode.t @@ -0,0 +1,24 @@ +#!/usr/bin/env perl +use utf8; +use strict; +use warnings; +use Test::More; +use Test::Exception; + +my $pkg; +BEGIN { + $pkg = 'Catmandu::Fix::url_encode'; + use_ok $pkg; +} + +is_deeply + $pkg->new('name')->fix({name => 'café'}), + {name => "caf%C3%A9"}, + "escape utf8 string from French"; + +is_deeply + $pkg->new('name')->fix({name => 'ὁ τῶν Πέρσων βασιλεύς'}), + {name => "%E1%BD%81+%CF%84%E1%BF%B6%CE%BD+%CE%A0%CE%AD%CF%81%CF%83%CF%89%CE%BD+%CE%B2%CE%B1%CF%83%CE%B9%CE%BB%CE%B5%CF%8D%CF%82"}, + "escape utf8 string from Greek"; + +done_testing 3; diff --git a/t/Catmandu-Fix-url_encode_decode.t b/t/Catmandu-Fix-url_encode_decode.t new file mode 100644 index 0000000..9771b70 --- /dev/null +++ b/t/Catmandu-Fix-url_encode_decode.t @@ -0,0 +1,32 @@ +#!/usr/bin/env perl +use utf8; +use strict; +use warnings; +use Test::More; +use Test::Exception; + +my $pkg1; +my $pkg2; +BEGIN { + $pkg1 = 'Catmandu::Fix::url_encode'; + use_ok $pkg1; + $pkg2 = 'Catmandu::Fix::url_decode'; + use_ok $pkg2; +} + +my $obj = { name => 'café' }; +my $obj2 = { name => 'ὁ τῶν Πέρσων βασιλεύς' }; +my $fixer1 = $pkg1->new('name'); +my $fixer2 = $pkg2->new('name'); + +is_deeply + $fixer2->fix( $fixer1->fix($obj) ), + { name => "café" }, + "escape and unescape French"; + +is_deeply + $fixer2->fix( $fixer1->fix($obj2) ), + { name => "ὁ τῶν Πέρσων βασιλεύς" }, + "escape and unescape Greek"; + +done_testing 4; -- 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