summaryrefslogtreecommitdiff
path: root/Data-MultiValued/lib/Data/MultiValued.pm
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 16:26:40 +0000
committerGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 16:26:40 +0000
commita3ac2afbd2800df8eda1295ebb5cf4fb83df2c2b (patch)
tree8992cadbec9a3c777eaf69145ae4243e45cf9f20 /Data-MultiValued/lib/Data/MultiValued.pm
parentprepare for renaming/split (diff)
downloaddata-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.pm54
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;