summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 16:24:25 +0000
committerGianni Ceccarelli <dakkar@thenautilus.net>2011-11-09 16:24:25 +0000
commitbea0af585eeb96a9b02c81c1dc0526ba85f56793 (patch)
treecaba477dd98c5c90e2ead4b7c687b02d1548cf1e
parentmore overlapping tests (diff)
downloaddata-multivalued-bea0af585eeb96a9b02c81c1dc0526ba85f56793.tar.gz
data-multivalued-bea0af585eeb96a9b02c81c1dc0526ba85f56793.tar.bz2
data-multivalued-bea0af585eeb96a9b02c81c1dc0526ba85f56793.zip
prepare for renaming/split
-rw-r--r--Data-TagsAndRanges/lib/Data/TagsAndRanges.pm6
-rw-r--r--Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainer.pm29
-rw-r--r--Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainerForRanges.pm21
3 files changed, 40 insertions, 16 deletions
diff --git a/Data-TagsAndRanges/lib/Data/TagsAndRanges.pm b/Data-TagsAndRanges/lib/Data/TagsAndRanges.pm
index 7c8ed7b..8a94b8f 100644
--- a/Data-TagsAndRanges/lib/Data/TagsAndRanges.pm
+++ b/Data-TagsAndRanges/lib/Data/TagsAndRanges.pm
@@ -4,19 +4,19 @@ use MooseX::Params::Validate;
use Moose::Util::TypeConstraints;
use MooseX::Types::Moose qw(Num Str Undef Any);
use Data::TagsAndRanges::Exceptions;
-use Data::TagsAndRanges::TagContainer;
+use Data::TagsAndRanges::TagContainerForRanges;
# ABSTRACT: Handle values with tags and validity ranges
has _storage => (
is => 'rw',
- isa => class_type('Data::TagsAndRanges::TagContainer'),
+ isa => class_type('Data::TagsAndRanges::TagContainerForRanges'),
init_arg => undef,
lazy_build => 1,
);
sub _build__storage {
- Data::TagsAndRanges::TagContainer->new();
+ Data::TagsAndRanges::TagContainerForRanges->new();
}
sub set {
diff --git a/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainer.pm b/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainer.pm
index c820f9a..8ede59f 100644
--- a/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainer.pm
+++ b/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainer.pm
@@ -3,11 +3,10 @@ use Moose;
use Moose::Util::TypeConstraints;
use MooseX::Types::Moose qw(HashRef);
use Data::TagsAndRanges::Exceptions;
-use Data::TagsAndRanges::RangeContainer;
has _storage => (
is => 'rw',
- isa => HashRef[class_type('Data::TagsAndRanges::RangeContainer')],
+ isa => HashRef,
init_arg => undef,
default => sub { { } },
traits => ['Hash'],
@@ -18,11 +17,10 @@ has _storage => (
},
);
-has _default_range => (
+has _default_tag => (
is => 'rw',
- isa => class_type('Data::TagsAndRanges::RangeContainer'),
init_arg => undef,
- predicate => '_has_default_range',
+ predicate => '_has_default_tag',
);
sub get {
@@ -31,8 +29,8 @@ sub get {
my $tag = $args->{tag};
if (!defined($tag)) {
- if ($self->_has_default_range) {
- return $self->_default_range;
+ if ($self->_has_default_tag) {
+ return $self->_default_tag;
}
Data::TagsAndRanges::Exceptions::TagNotFound->throw({
@@ -54,20 +52,25 @@ sub get_or_create {
my $tag = $args->{tag};
if (!defined($tag)) {
- if ($self->_has_default_range) {
- return $self->_default_range;
+ if ($self->_has_default_tag) {
+ return $self->_default_tag;
}
else {
- return $self->_default_range(
- Data::TagsAndRanges::RangeContainer->new()
- );
+ return $self->_default_tag(
+ $self->_create_new_inferior
+ );
}
}
if (!$self->_has_tag($tag)) {
- $self->_create_tag($tag,Data::TagsAndRanges::RangeContainer->new());
+ $self->_create_tag($tag,$self->_create_new_inferior);
}
return $self->_get_tag($tag);
}
+sub _create_new_inferior {
+ my ($self) = @_;
+ return {};
+}
+
1;
diff --git a/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainerForRanges.pm b/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainerForRanges.pm
new file mode 100644
index 0000000..3c1b44a
--- /dev/null
+++ b/Data-TagsAndRanges/lib/Data/TagsAndRanges/TagContainerForRanges.pm
@@ -0,0 +1,21 @@
+package Data::TagsAndRanges::TagContainerForRanges;
+use Moose;
+use MooseX::Types::Moose qw(HashRef);
+use Moose::Util::TypeConstraints;
+use Data::TagsAndRanges::RangeContainer;
+
+extends 'Data::TagsAndRanges::TagContainer';
+
+has '+_storage' => (
+ isa => HashRef[class_type('Data::TagsAndRanges::RangeContainer')],
+);
+
+has '+_default_tag' => (
+ isa => class_type('Data::TagsAndRanges::RangeContainer'),
+);
+
+sub _create_new_inferior {
+ Data::TagsAndRanges::RangeContainer->new();
+}
+
+1;