diff options
-rw-r--r-- | .gitignore | 13 | ||||
-rw-r--r-- | Changes | 2 | ||||
-rw-r--r-- | MANIFEST | 32 | ||||
-rw-r--r-- | META.json | 55 | ||||
-rw-r--r-- | META.yml | 35 | ||||
-rw-r--r-- | Makefile.PL | 67 | ||||
-rw-r--r-- | lib/Data/MultiValued.pod | 98 | ||||
-rw-r--r-- | lib/Data/MultiValued/AttributeAccessors.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/AttributeTrait.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/AttributeTrait/Ranges.pm | 39 | ||||
-rw-r--r-- | lib/Data/MultiValued/AttributeTrait/Tags.pm | 39 | ||||
-rw-r--r-- | lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm | 39 | ||||
-rw-r--r-- | lib/Data/MultiValued/Exceptions.pm | 63 | ||||
-rw-r--r-- | lib/Data/MultiValued/RangeContainer.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/Ranges.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/TagContainer.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/TagContainerForRanges.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/Tags.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/TagsAndRanges.pm | 31 | ||||
-rw-r--r-- | lib/Data/MultiValued/UglySerializationHelperRole.pm | 31 | ||||
-rw-r--r-- | t/release-no-tabs.t | 16 | ||||
-rw-r--r-- | t/release-pod-coverage.t | 21 | ||||
-rw-r--r-- | t/release-pod-syntax.t | 15 |
23 files changed, 792 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 3baba5b..0000000 --- a/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -blib -pm_to_blib -*.sw? -Makefile -Makefile.old -MANIFEST.bak -*.tar.gz -/inc/ -META.yml -.prove -*~ -/.build/ -/Data-*/ @@ -1,4 +1,4 @@ Revision history for Data::MultiValued -{{$NEXT}} +0.0.1 2011-11-14 14:17:16 Europe/London - first working version diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..fcbb718 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,32 @@ +Changes +MANIFEST +META.json +META.yml +Makefile.PL +dist.ini +lib/Data/MultiValued.pod +lib/Data/MultiValued/AttributeAccessors.pm +lib/Data/MultiValued/AttributeTrait.pm +lib/Data/MultiValued/AttributeTrait/Ranges.pm +lib/Data/MultiValued/AttributeTrait/Tags.pm +lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm +lib/Data/MultiValued/Exceptions.pm +lib/Data/MultiValued/RangeContainer.pm +lib/Data/MultiValued/Ranges.pm +lib/Data/MultiValued/TagContainer.pm +lib/Data/MultiValued/TagContainerForRanges.pm +lib/Data/MultiValued/Tags.pm +lib/Data/MultiValued/TagsAndRanges.pm +lib/Data/MultiValued/UglySerializationHelperRole.pm +t/json.t +t/moose-ranges.t +t/moose-tagged.t +t/more-overlapping-ranges.t +t/overlapping-ranges.t +t/ranges-setting.t +t/release-no-tabs.t +t/release-pod-coverage.t +t/release-pod-syntax.t +t/simple-setting.t +t/tags-ranges-setting.t +t/tags-setting.t diff --git a/META.json b/META.json new file mode 100644 index 0000000..b9e7068 --- /dev/null +++ b/META.json @@ -0,0 +1,55 @@ +{ + "abstract" : "Handle values with tags and validity ranges", + "author" : [ + "Gianni Ceccarelli <dakkar@thenautilus.net>" + ], + "dynamic_config" : 0, + "generated_by" : "Dist::Zilla version 4.200012, CPAN::Meta::Converter version 2.110930", + "license" : [ + "perl_5" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Data-MultiValued", + "no_index" : { + "directory" : [ + "t/lib" + ] + }, + "prereqs" : { + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "6.30" + } + }, + "runtime" : { + "requires" : { + "Carp" : 0, + "Data::MultiValued::Exceptions::NotFound" : 0, + "Moose" : 0, + "Moose::Meta::Method::Accessor" : 0, + "Moose::Role" : 0, + "Moose::Util::TypeConstraints" : 0, + "MooseX::Params::Validate" : 0, + "MooseX::Types::Moose" : 0, + "MooseX::Types::Structured" : 0, + "Throwable::Error" : 0, + "Try::Tiny" : 0, + "namespace::autoclean" : 0 + } + }, + "test" : { + "requires" : { + "Data::Printer" : 0, + "JSON::XS" : 0, + "Test::More" : 0, + "Test::Most" : 0 + } + } + }, + "release_status" : "stable", + "version" : "0.0.1" +} + diff --git a/META.yml b/META.yml new file mode 100644 index 0000000..df1e28a --- /dev/null +++ b/META.yml @@ -0,0 +1,35 @@ +--- +abstract: 'Handle values with tags and validity ranges' +author: + - 'Gianni Ceccarelli <dakkar@thenautilus.net>' +build_requires: + Data::Printer: 0 + JSON::XS: 0 + Test::More: 0 + Test::Most: 0 +configure_requires: + ExtUtils::MakeMaker: 6.30 +dynamic_config: 0 +generated_by: 'Dist::Zilla version 4.200012, CPAN::Meta::Converter version 2.110930' +license: perl +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: 1.4 +name: Data-MultiValued +no_index: + directory: + - t/lib +requires: + Carp: 0 + Data::MultiValued::Exceptions::NotFound: 0 + Moose: 0 + Moose::Meta::Method::Accessor: 0 + Moose::Role: 0 + Moose::Util::TypeConstraints: 0 + MooseX::Params::Validate: 0 + MooseX::Types::Moose: 0 + MooseX::Types::Structured: 0 + Throwable::Error: 0 + Try::Tiny: 0 + namespace::autoclean: 0 +version: 0.0.1 diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..7f4f2ca --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,67 @@ + +use strict; +use warnings; + + + +use ExtUtils::MakeMaker 6.30; + + + +my %WriteMakefileArgs = ( + 'ABSTRACT' => 'Handle values with tags and validity ranges', + 'AUTHOR' => 'Gianni Ceccarelli <dakkar@thenautilus.net>', + 'BUILD_REQUIRES' => { + 'Data::Printer' => '0', + 'JSON::XS' => '0', + 'Test::More' => '0', + 'Test::Most' => '0' + }, + 'CONFIGURE_REQUIRES' => { + 'ExtUtils::MakeMaker' => '6.30' + }, + 'DISTNAME' => 'Data-MultiValued', + 'EXE_FILES' => [], + 'LICENSE' => 'perl', + 'NAME' => 'Data::MultiValued', + 'PREREQ_PM' => { + 'Carp' => '0', + 'Data::MultiValued::Exceptions::NotFound' => '0', + 'Moose' => '0', + 'Moose::Meta::Method::Accessor' => '0', + 'Moose::Role' => '0', + 'Moose::Util::TypeConstraints' => '0', + 'MooseX::Params::Validate' => '0', + 'MooseX::Types::Moose' => '0', + 'MooseX::Types::Structured' => '0', + 'Throwable::Error' => '0', + 'Try::Tiny' => '0', + 'namespace::autoclean' => '0' + }, + 'VERSION' => '0.0.1', + 'test' => { + 'TESTS' => 't/*.t' + } +); + + +unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) { + my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; + my $pp = $WriteMakefileArgs{PREREQ_PM}; + for my $mod ( keys %$br ) { + if ( exists $pp->{$mod} ) { + $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; + } + else { + $pp->{$mod} = $br->{$mod}; + } + } +} + +delete $WriteMakefileArgs{CONFIGURE_REQUIRES} + unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; + +WriteMakefile(%WriteMakefileArgs); + + + diff --git a/lib/Data/MultiValued.pod b/lib/Data/MultiValued.pod new file mode 100644 index 0000000..bfc49f9 --- /dev/null +++ b/lib/Data/MultiValued.pod @@ -0,0 +1,98 @@ +# PODNAME: Data::MultiValued + + +__END__ +=pod + +=head1 NAME + +Data::MultiValued + +=head1 VERSION + +version 0.0.1 + +=head1 SYNOPSIS + + use Data::MultiValued::Tags; + + my $obj = Data::MultiValued::Tags->new(); + $obj->set({ + tag => 'tag1', + value => 'a string', + }); + say $obj->get({tag=>'tag1'}); # prints 'a string' + say $obj->get({tag=>'tag2'}); # dies + +Also: + + package My::Class; + use Moose; + use Data::MultiValued::AttributeTrait::Tags; + + has stuff => ( + is => 'rw', + isa => 'Int', + traits => ['MultiValued::Tags'], + ); + + # later + + my $obj = My::Class->new(); + $obj->stuff_multi({tag=>'tag1'},123); + say $obj->stuff_multi({tag=>'tag1'}); # prints 123 + +=head1 DESCRIPTION + +This set of classes allows you to store different values inside a +single object, and access them by tag and / or by a numeric value. + +Yes, you could do the same with hashes and some clever use of +arrays. Or you could use L<Array::IntSpan>. Or some other CPAN +module. Why use these? + +=over 4 + +=item * + +they are optimised for serialisation, see +L<Data::MultiValued::UglySerializationHelperRole> and F<t/json.t>. + +=item * + +you get accessors generated for your Moose attributes just by setting +a trait + +=item * + +tags and ranges interact in sensible ways, including clearing ranges + +=back + +=head1 NAME + +Data::MultiValued - store tag- and range-dependant data in a scalar or Moose attribute + +=head1 Where to go from here + +Look at the tests for detailed examples of usage. Look at +L<Data::MultiValued::Tags>, L<Data::MultiValued::Ranges> and +L<Data::MultiValued::TagsAndRanges> for the containers +themselves. Look at L<Data::MultiValued::AttributeTrait::Tags>, +L<Data::MultiValued::AttributeTrait::Ranges> and +L<Data::MultiValued::AttributeTrait::TagsAndRanges> for the Moose +attribute traits. + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/AttributeAccessors.pm b/lib/Data/MultiValued/AttributeAccessors.pm index cac3538..abe2459 100644 --- a/lib/Data/MultiValued/AttributeAccessors.pm +++ b/lib/Data/MultiValued/AttributeAccessors.pm @@ -1,4 +1,10 @@ package Data::MultiValued::AttributeAccessors; +BEGIN { + $Data::MultiValued::AttributeAccessors::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::AttributeAccessors::DIST = 'Data-MultiValued'; +} use strict; use warnings; use base 'Moose::Meta::Method::Accessor'; @@ -107,3 +113,28 @@ sub _generate_multi_clearer_method { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::AttributeAccessors + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/AttributeTrait.pm b/lib/Data/MultiValued/AttributeTrait.pm index 91e1b13..afeea2e 100644 --- a/lib/Data/MultiValued/AttributeTrait.pm +++ b/lib/Data/MultiValued/AttributeTrait.pm @@ -1,4 +1,10 @@ package Data::MultiValued::AttributeTrait; +BEGIN { + $Data::MultiValued::AttributeTrait::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::AttributeTrait::DIST = 'Data-MultiValued'; +} use Moose::Role; use Data::MultiValued::AttributeAccessors; use MooseX::Types::Moose qw(Str); @@ -227,3 +233,28 @@ sub _as_hash { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::AttributeTrait + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/AttributeTrait/Ranges.pm b/lib/Data/MultiValued/AttributeTrait/Ranges.pm index 8d93578..347ee96 100644 --- a/lib/Data/MultiValued/AttributeTrait/Ranges.pm +++ b/lib/Data/MultiValued/AttributeTrait/Ranges.pm @@ -1,4 +1,10 @@ package Data::MultiValued::AttributeTrait::Ranges; +BEGIN { + $Data::MultiValued::AttributeTrait::Ranges::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::AttributeTrait::Ranges::DIST = 'Data-MultiValued'; +} use Moose::Role; use Data::MultiValued::Ranges; with 'Data::MultiValued::AttributeTrait'; @@ -7,8 +13,39 @@ sub multivalue_storage_class { 'Data::MultiValued::Ranges' }; sub opts_to_pass_set { qw(from to) } sub opts_to_pass_get { qw(at) } -package Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges;{ +package Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges; +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges::VERSION = '0.0.1'; +} +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges::DIST = 'Data-MultiValued'; +}{ sub register_implementation { 'Data::MultiValued::AttributeTrait::Ranges' } } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::AttributeTrait::Ranges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/AttributeTrait/Tags.pm b/lib/Data/MultiValued/AttributeTrait/Tags.pm index 7cffb33..4355ebe 100644 --- a/lib/Data/MultiValued/AttributeTrait/Tags.pm +++ b/lib/Data/MultiValued/AttributeTrait/Tags.pm @@ -1,4 +1,10 @@ package Data::MultiValued::AttributeTrait::Tags; +BEGIN { + $Data::MultiValued::AttributeTrait::Tags::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::AttributeTrait::Tags::DIST = 'Data-MultiValued'; +} use Moose::Role; use Data::MultiValued::Tags; with 'Data::MultiValued::AttributeTrait'; @@ -7,8 +13,39 @@ sub multivalue_storage_class { 'Data::MultiValued::Tags' }; sub opts_to_pass_set { qw(tag) } sub opts_to_pass_get { qw(tag) } -package Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags;{ +package Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags; +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags::VERSION = '0.0.1'; +} +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags::DIST = 'Data-MultiValued'; +}{ sub register_implementation { 'Data::MultiValued::AttributeTrait::Tags' } } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::AttributeTrait::Tags + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm b/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm index e0c56cd..20b4acd 100644 --- a/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm +++ b/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm @@ -1,4 +1,10 @@ package Data::MultiValued::AttributeTrait::TagsAndRanges; +BEGIN { + $Data::MultiValued::AttributeTrait::TagsAndRanges::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::AttributeTrait::TagsAndRanges::DIST = 'Data-MultiValued'; +} use Moose::Role; use Data::MultiValued::TagsAndRanges; with 'Data::MultiValued::AttributeTrait'; @@ -7,8 +13,39 @@ sub multivalue_storage_class { 'Data::MultiValued::TagsAndRanges' }; sub opts_to_pass_set { qw(from to tag) } sub opts_to_pass_get { qw(at tag) } -package Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges;{ +package Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges; +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges::VERSION = '0.0.1'; +} +BEGIN { + $Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges::DIST = 'Data-MultiValued'; +}{ sub register_implementation { 'Data::MultiValued::AttributeTrait::TagsAndRanges' } } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::AttributeTrait::TagsAndRanges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/Exceptions.pm b/lib/Data/MultiValued/Exceptions.pm index 8d444c0..77a9e22 100644 --- a/lib/Data/MultiValued/Exceptions.pm +++ b/lib/Data/MultiValued/Exceptions.pm @@ -1,5 +1,17 @@ package Data::MultiValued::Exceptions; -package Data::MultiValued::Exceptions::NotFound;{ +BEGIN { + $Data::MultiValued::Exceptions::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Exceptions::DIST = 'Data-MultiValued'; +} +package Data::MultiValued::Exceptions::NotFound; +BEGIN { + $Data::MultiValued::Exceptions::NotFound::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Exceptions::NotFound::DIST = 'Data-MultiValued'; +}{ use Moose; extends 'Throwable::Error'; @@ -18,7 +30,13 @@ sub as_string { } } -package Data::MultiValued::Exceptions::TagNotFound;{ +package Data::MultiValued::Exceptions::TagNotFound; +BEGIN { + $Data::MultiValued::Exceptions::TagNotFound::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Exceptions::TagNotFound::DIST = 'Data-MultiValued'; +}{ use Moose; extends 'Data::MultiValued::Exceptions::NotFound'; @@ -26,7 +44,13 @@ has '+message' => ( default => 'tag not found: ', ); } -package Data::MultiValued::Exceptions::RangeNotFound;{ +package Data::MultiValued::Exceptions::RangeNotFound; +BEGIN { + $Data::MultiValued::Exceptions::RangeNotFound::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Exceptions::RangeNotFound::DIST = 'Data-MultiValued'; +}{ use Moose; extends 'Data::MultiValued::Exceptions::NotFound'; @@ -34,7 +58,13 @@ has '+message' => ( default => 'no range found for value ', ); } -package Data::MultiValued::Exceptions::BadRange;{ +package Data::MultiValued::Exceptions::BadRange; +BEGIN { + $Data::MultiValued::Exceptions::BadRange::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Exceptions::BadRange::DIST = 'Data-MultiValued'; +}{ use Moose; extends 'Throwable::Error'; @@ -55,3 +85,28 @@ sub as_string { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::Exceptions + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/RangeContainer.pm b/lib/Data/MultiValued/RangeContainer.pm index e9b1b62..69dcc38 100644 --- a/lib/Data/MultiValued/RangeContainer.pm +++ b/lib/Data/MultiValued/RangeContainer.pm @@ -1,4 +1,10 @@ package Data::MultiValued::RangeContainer; +BEGIN { + $Data::MultiValued::RangeContainer::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::RangeContainer::DIST = 'Data-MultiValued'; +} use Moose; use Moose::Util::TypeConstraints; use MooseX::Types::Moose qw(Num Str Any Undef ArrayRef); @@ -194,3 +200,28 @@ sub _splice_slot { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::RangeContainer + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/Ranges.pm b/lib/Data/MultiValued/Ranges.pm index 9c69626..57bda5d 100644 --- a/lib/Data/MultiValued/Ranges.pm +++ b/lib/Data/MultiValued/Ranges.pm @@ -1,4 +1,10 @@ package Data::MultiValued::Ranges; +BEGIN { + $Data::MultiValued::Ranges::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Ranges::DIST = 'Data-MultiValued'; +} use Moose; use MooseX::Params::Validate; use Moose::Util::TypeConstraints; @@ -66,3 +72,28 @@ sub clear { 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::Ranges - Handle values with tags and validity ranges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/TagContainer.pm b/lib/Data/MultiValued/TagContainer.pm index cdd0456..a65115b 100644 --- a/lib/Data/MultiValued/TagContainer.pm +++ b/lib/Data/MultiValued/TagContainer.pm @@ -1,4 +1,10 @@ package Data::MultiValued::TagContainer; +BEGIN { + $Data::MultiValued::TagContainer::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::TagContainer::DIST = 'Data-MultiValued'; +} use Moose; use Moose::Util::TypeConstraints; use MooseX::Types::Moose qw(HashRef); @@ -97,3 +103,28 @@ sub _create_new_inferior { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::TagContainer + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/TagContainerForRanges.pm b/lib/Data/MultiValued/TagContainerForRanges.pm index d3cd4b9..27af25a 100644 --- a/lib/Data/MultiValued/TagContainerForRanges.pm +++ b/lib/Data/MultiValued/TagContainerForRanges.pm @@ -1,4 +1,10 @@ package Data::MultiValued::TagContainerForRanges; +BEGIN { + $Data::MultiValued::TagContainerForRanges::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::TagContainerForRanges::DIST = 'Data-MultiValued'; +} use Moose; use MooseX::Types::Moose qw(HashRef); use Moose::Util::TypeConstraints; @@ -36,3 +42,28 @@ sub _as_hash { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::TagContainerForRanges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/Tags.pm b/lib/Data/MultiValued/Tags.pm index fbf7948..51f7cdb 100644 --- a/lib/Data/MultiValued/Tags.pm +++ b/lib/Data/MultiValued/Tags.pm @@ -1,4 +1,10 @@ package Data::MultiValued::Tags; +BEGIN { + $Data::MultiValued::Tags::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::Tags::DIST = 'Data-MultiValued'; +} use Moose; use MooseX::Params::Validate; use Moose::Util::TypeConstraints; @@ -63,3 +69,28 @@ sub clear { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::Tags - Handle values with tags and validity ranges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/TagsAndRanges.pm b/lib/Data/MultiValued/TagsAndRanges.pm index 6208435..cc57b16 100644 --- a/lib/Data/MultiValued/TagsAndRanges.pm +++ b/lib/Data/MultiValued/TagsAndRanges.pm @@ -1,4 +1,10 @@ package Data::MultiValued::TagsAndRanges; +BEGIN { + $Data::MultiValued::TagsAndRanges::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::TagsAndRanges::DIST = 'Data-MultiValued'; +} use Moose; use MooseX::Params::Validate; use Moose::Util::TypeConstraints; @@ -77,3 +83,28 @@ sub clear { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::TagsAndRanges - Handle values with tags and validity ranges + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/lib/Data/MultiValued/UglySerializationHelperRole.pm b/lib/Data/MultiValued/UglySerializationHelperRole.pm index e586dec..60de111 100644 --- a/lib/Data/MultiValued/UglySerializationHelperRole.pm +++ b/lib/Data/MultiValued/UglySerializationHelperRole.pm @@ -1,4 +1,10 @@ package Data::MultiValued::UglySerializationHelperRole; +BEGIN { + $Data::MultiValued::UglySerializationHelperRole::VERSION = '0.0.1'; +} +BEGIN { + $Data::MultiValued::UglySerializationHelperRole::DIST = 'Data-MultiValued'; +} use Moose::Role; sub new_in_place { @@ -33,3 +39,28 @@ sub as_hash { } 1; + +__END__ +=pod + +=head1 NAME + +Data::MultiValued::UglySerializationHelperRole + +=head1 VERSION + +version 0.0.1 + +=head1 AUTHOR + +Gianni Ceccarelli <dakkar@thenautilus.net> + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2011 by Net-a-porter.com. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut + diff --git a/t/release-no-tabs.t b/t/release-no-tabs.t new file mode 100644 index 0000000..1c7204e --- /dev/null +++ b/t/release-no-tabs.t @@ -0,0 +1,16 @@ + +BEGIN { + unless ($ENV{RELEASE_TESTING}) { + require Test::More; + Test::More::plan(skip_all => 'these tests are for release candidate testing'); + } +} + +use strict; +use warnings; +use Test::More; + +eval 'use Test::NoTabs'; +plan skip_all => 'Test::NoTabs required' if $@; + +all_perl_files_ok(); diff --git a/t/release-pod-coverage.t b/t/release-pod-coverage.t new file mode 100644 index 0000000..3a81849 --- /dev/null +++ b/t/release-pod-coverage.t @@ -0,0 +1,21 @@ +#!perl + +BEGIN { + unless ($ENV{RELEASE_TESTING}) { + require Test::More; + Test::More::plan(skip_all => 'these tests are for release candidate testing'); + } +} + + +use Test::More; + +eval "use Test::Pod::Coverage 1.08"; +plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage" + if $@; + +eval "use Pod::Coverage::TrustPod"; +plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage" + if $@; + +all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); diff --git a/t/release-pod-syntax.t b/t/release-pod-syntax.t new file mode 100644 index 0000000..d46a955 --- /dev/null +++ b/t/release-pod-syntax.t @@ -0,0 +1,15 @@ +#!perl + +BEGIN { + unless ($ENV{RELEASE_TESTING}) { + require Test::More; + Test::More::plan(skip_all => 'these tests are for release candidate testing'); + } +} + +use Test::More; + +eval "use Test::Pod 1.41"; +plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; + +all_pod_files_ok(); |