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; use MooseX::Types::Moose qw(Num Str Undef Any); use Data::MultiValued::Exceptions; use Data::MultiValued::RangeContainer; # ABSTRACT: Handle values with tags and validity ranges has _storage => ( is => 'rw', isa => class_type('Data::MultiValued::RangeContainer'), init_arg => undef, lazy_build => 1, ); sub _build__storage { Data::MultiValued::RangeContainer->new(); } sub _rebless_storage { my ($self) = @_; bless $self->{_storage},'Data::MultiValued::RangeContainer'; } sub _as_hash { my ($self) = @_; my %ret = %{$self->_storage}; return {_storage=>\%ret}; } sub set { my ($self,%args) = validated_hash( \@_, from => { isa => Num|Undef, optional => 1, }, to => { isa => Num|Undef, optional => 1, }, value => { isa => Any, }, ); $self->_storage->set_or_create(\%args) ->{value} = $args{value}; } sub get { my ($self,%args) = validated_hash( \@_, at => { isa => Num|Undef, optional => 1, }, ); $self->_storage->get(\%args) ->{value}; } sub clear { my ($self,%args) = validated_hash( \@_, from => { isa => Num|Undef, optional => 1, }, to => { isa => Num|Undef, optional => 1, }, ); $self->_storage->clear(\%args); } 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 =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