package Data::MultiValued::TagsAndRanges; 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;