diff options
Diffstat (limited to 'lib/Data/MultiValued/TagContainerForRanges.pm')
-rw-r--r-- | lib/Data/MultiValued/TagContainerForRanges.pm | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/lib/Data/MultiValued/TagContainerForRanges.pm b/lib/Data/MultiValued/TagContainerForRanges.pm index 27af25a..071ac04 100644 --- a/lib/Data/MultiValued/TagContainerForRanges.pm +++ b/lib/Data/MultiValued/TagContainerForRanges.pm @@ -10,6 +10,9 @@ use MooseX::Types::Moose qw(HashRef); use Moose::Util::TypeConstraints; use Data::MultiValued::RangeContainer; +# ABSTRACT: container for tagged values that are ranged containers + + extends 'Data::MultiValued::TagContainer'; has '+_storage' => ( @@ -20,20 +23,28 @@ has '+_default_tag' => ( isa => class_type('Data::MultiValued::RangeContainer'), ); + sub _create_new_inferior { Data::MultiValued::RangeContainer->new(); } + sub _rebless_storage { my ($self) = @_; - bless $self->{_storage},'Data::MultiValued::RangeContainer'; + bless $_,'Data::MultiValued::RangeContainer' + for values %{$self->{_storage}}; bless $self->{_default_tag},'Data::MultiValued::RangeContainer'; return; } + sub _as_hash { my ($self) = @_; - my %st = %{$self->_storage}; + my %st; + for my $k (keys %{$self->_storage}) { + my %v = %{$self->_storage->{$k}}; + $st{$k}=\%v; + } my %dt = %{$self->_default_tag}; return { _storage => \%st, @@ -48,12 +59,41 @@ __END__ =head1 NAME -Data::MultiValued::TagContainerForRanges +Data::MultiValued::TagContainerForRanges - container for tagged values that are ranged containers =head1 VERSION version 0.0.1 +=head1 DESCRIPTION + +Please don't use this module directly, use +L<Data::MultiValued::TagsAndRanges>. + +This module is a subclass of L<Data::MultiValued::TagContainer>, which +only allows instances of L<Data::MultiValued::RangeContainer> as +"storage cells". + +=head1 METHODS + +=head2 C<_create_new_inferior> + +Returns a new L<Data::MultiValued::RangeContainer> instance. + +=head1 Serialisation helpers + +These are used through +L<Data::MultiValued::UglySerializationHelperRole>. + +=head2 C<_rebless_storage> + +Blesses the "storage cells" into L<Data::MultiValued::RangeContainer>. + +=head2 C<_as_hash> + +Returns the internal representation with no blessed hashes, with as +few copies as possible. + =head1 AUTHOR Gianni Ceccarelli <dakkar@thenautilus.net> |