summaryrefslogtreecommitdiff
path: root/lib/Data/MultiValued/TagContainerForRanges.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Data/MultiValued/TagContainerForRanges.pm')
-rw-r--r--lib/Data/MultiValued/TagContainerForRanges.pm46
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>