summaryrefslogtreecommitdiff
path: root/Data-MultiValued/lib/Data
diff options
context:
space:
mode:
Diffstat (limited to 'Data-MultiValued/lib/Data')
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/Ranges.pm50
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/Tags.pm49
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/TagsAndRanges.pm (renamed from Data-MultiValued/lib/Data/MultiValued.pm)2
3 files changed, 100 insertions, 1 deletions
diff --git a/Data-MultiValued/lib/Data/MultiValued/Ranges.pm b/Data-MultiValued/lib/Data/MultiValued/Ranges.pm
new file mode 100644
index 0000000..b2acdd4
--- /dev/null
+++ b/Data-MultiValued/lib/Data/MultiValued/Ranges.pm
@@ -0,0 +1,50 @@
+package Data::MultiValued::Ranges;
+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::RangeContainer;
+
+# ABSTRACT: Handle values with tags and validity ranges
+
+has _storage => (
+ is => 'rw',
+ isa => class_type('Data::MultiValued::RangeContainer'),
+ init_arg => undef,
+ lazy_build => 1,
+);
+
+sub _build__storage {
+ Data::MultiValued::RangeContainer->new();
+}
+
+sub set {
+ my ($self,%args) = validated_hash(
+ \@_,
+ from => { isa => Num|Undef, optional => 1, },
+ to => { isa => Num|Undef, optional => 1, },
+ value => { isa => Any, },
+ );
+
+ $self->_storage->set_or_create(\%args)
+ ->{value} = $args{value};
+}
+
+sub get {
+ my ($self,%args) = validated_hash(
+ \@_,
+ at => { isa => Num|Undef, optional => 1, },
+ );
+
+ $self->_storage->get(\%args)
+ ->{value};
+}
+
+sub clear {
+ my ($self) = @_;
+
+ $self->_clear_storage;
+}
+
+1;
diff --git a/Data-MultiValued/lib/Data/MultiValued/Tags.pm b/Data-MultiValued/lib/Data/MultiValued/Tags.pm
new file mode 100644
index 0000000..0325f61
--- /dev/null
+++ b/Data-MultiValued/lib/Data/MultiValued/Tags.pm
@@ -0,0 +1,49 @@
+package Data::MultiValued::Tags;
+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::TagContainer;
+
+# ABSTRACT: Handle values with tags and validity ranges
+
+has _storage => (
+ is => 'rw',
+ isa => class_type('Data::MultiValued::TagContainer'),
+ init_arg => undef,
+ lazy_build => 1,
+);
+
+sub _build__storage {
+ Data::MultiValued::TagContainer->new();
+}
+
+sub set {
+ my ($self,%args) = validated_hash(
+ \@_,
+ tag => { isa => Str, optional => 1, },
+ value => { isa => Any, },
+ );
+
+ $self->_storage->get_or_create(\%args)
+ ->{value} = $args{value};
+}
+
+sub get {
+ my ($self,%args) = validated_hash(
+ \@_,
+ tag => { isa => Str, optional => 1, },
+ );
+
+ $self->_storage->get(\%args)
+ ->{value};
+}
+
+sub clear {
+ my ($self) = @_;
+
+ $self->_clear_storage;
+}
+
+1;
diff --git a/Data-MultiValued/lib/Data/MultiValued.pm b/Data-MultiValued/lib/Data/MultiValued/TagsAndRanges.pm
index 65b041d..e940449 100644
--- a/Data-MultiValued/lib/Data/MultiValued.pm
+++ b/Data-MultiValued/lib/Data/MultiValued/TagsAndRanges.pm
@@ -1,4 +1,4 @@
-package Data::MultiValued;
+package Data::MultiValued::TagsAndRanges;
use Moose;
use MooseX::Params::Validate;
use Moose::Util::TypeConstraints;