diff options
author | Gianni Ceccarelli <dakkar@thenautilus.net> | 2011-11-09 16:26:40 +0000 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@thenautilus.net> | 2011-11-09 16:26:40 +0000 |
commit | a3ac2afbd2800df8eda1295ebb5cf4fb83df2c2b (patch) | |
tree | 8992cadbec9a3c777eaf69145ae4243e45cf9f20 /Data-MultiValued/lib/Data/MultiValued.pm | |
parent | prepare for renaming/split (diff) | |
download | data-multivalued-a3ac2afbd2800df8eda1295ebb5cf4fb83df2c2b.tar.gz data-multivalued-a3ac2afbd2800df8eda1295ebb5cf4fb83df2c2b.tar.bz2 data-multivalued-a3ac2afbd2800df8eda1295ebb5cf4fb83df2c2b.zip |
renaming
Diffstat (limited to 'Data-MultiValued/lib/Data/MultiValued.pm')
-rw-r--r-- | Data-MultiValued/lib/Data/MultiValued.pm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Data-MultiValued/lib/Data/MultiValued.pm b/Data-MultiValued/lib/Data/MultiValued.pm new file mode 100644 index 0000000..65b041d --- /dev/null +++ b/Data-MultiValued/lib/Data/MultiValued.pm @@ -0,0 +1,54 @@ +package 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::TagContainerForRanges; + +# ABSTRACT: Handle values with tags and validity ranges + +has _storage => ( + is => 'rw', + isa => class_type('Data::MultiValued::TagContainerForRanges'), + init_arg => undef, + lazy_build => 1, +); + +sub _build__storage { + Data::MultiValued::TagContainerForRanges->new(); +} + +sub set { + my ($self,%args) = validated_hash( + \@_, + from => { isa => Num|Undef, optional => 1, }, + to => { isa => Num|Undef, optional => 1, }, + tag => { isa => Str, optional => 1, }, + value => { isa => Any, }, + ); + + $self->_storage->get_or_create(\%args) + ->set_or_create(\%args) + ->{value} = $args{value}; +} + +sub get { + my ($self,%args) = validated_hash( + \@_, + at => { isa => Num|Undef, optional => 1, }, + tag => { isa => Str, optional => 1, }, + ); + + $self->_storage->get(\%args) + ->get(\%args) + ->{value}; +} + +sub clear { + my ($self) = @_; + + $self->_clear_storage; +} + +1; |