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/AttributeAccessors.pm34
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm (renamed from Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tagged.pm)47
-rw-r--r--Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tags.pm12
3 files changed, 51 insertions, 42 deletions
diff --git a/Data-MultiValued/lib/Data/MultiValued/AttributeAccessors.pm b/Data-MultiValued/lib/Data/MultiValued/AttributeAccessors.pm
index e6fec67..cac3538 100644
--- a/Data-MultiValued/lib/Data/MultiValued/AttributeAccessors.pm
+++ b/Data-MultiValued/lib/Data/MultiValued/AttributeAccessors.pm
@@ -12,9 +12,9 @@ sub _generate_accessor_method {
return sub {
if (@_ >= 2) {
- $attr->set_tagged_value($_[0], {}, $_[1]);
+ $attr->set_multi_value($_[0], {}, $_[1]);
}
- $attr->get_tagged_value($_[0], {});
+ $attr->get_multi_value($_[0], {});
}
}
@@ -25,7 +25,7 @@ sub _generate_reader_method {
return sub {
confess "Cannot assign a value to a read-only accessor"
if @_ > 1;
- $attr->get_tagged_value($_[0], {});
+ $attr->get_multi_value($_[0], {});
};
}
@@ -34,7 +34,7 @@ sub _generate_writer_method {
my $attr = $self->associated_attribute;
return sub {
- $attr->set_tagged_value($_[0], {}, $_[1]);
+ $attr->set_multi_value($_[0], {}, $_[1]);
};
}
@@ -43,7 +43,7 @@ sub _generate_predicate_method {
my $attr = $self->associated_attribute;
return sub {
- $attr->has_tagged_value($_[0], {})
+ $attr->has_multi_value($_[0], {})
};
}
@@ -52,57 +52,57 @@ sub _generate_clearer_method {
my $attr = $self->associated_attribute;
return sub {
- $attr->clear_tagged_value($_[0], {})
+ $attr->clear_multi_value($_[0], {})
};
}
-sub _generate_tagged_accessor_method {
+sub _generate_multi_accessor_method {
my $self = shift;
my $attr = $self->associated_attribute;
return sub {
if (@_ >= 3) {
- $attr->set_tagged_value($_[0], $_[1], $_[2]);
+ $attr->set_multi_value($_[0], $_[1], $_[2]);
}
- $attr->get_tagged_value($_[0],$_[1]);
+ $attr->get_multi_value($_[0],$_[1]);
}
}
-sub _generate_tagged_reader_method {
+sub _generate_multi_reader_method {
my $self = shift;
my $attr = $self->associated_attribute;
return sub {
confess "Cannot assign a value to a read-only accessor"
if @_ > 2;
- $attr->get_tagged_value($_[0],$_[1]);
+ $attr->get_multi_value($_[0],$_[1]);
};
}
-sub _generate_tagged_writer_method {
+sub _generate_multi_writer_method {
my $self = shift;
my $attr = $self->associated_attribute;
return sub {
- $attr->set_tagged_value($_[0], $_[1], $_[2]);
+ $attr->set_multi_value($_[0], $_[1], $_[2]);
};
}
-sub _generate_tagged_predicate_method {
+sub _generate_multi_predicate_method {
my $self = shift;
my $attr = $self->associated_attribute;
return sub {
- $attr->has_tagged_value($_[0],$_[1])
+ $attr->has_multi_value($_[0],$_[1])
};
}
-sub _generate_tagged_clearer_method {
+sub _generate_multi_clearer_method {
my $self = shift;
my $attr = $self->associated_attribute;
return sub {
- $attr->clear_tagged_value($_[0],$_[1])
+ $attr->clear_multi_value($_[0],$_[1])
};
}
diff --git a/Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tagged.pm b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
index 2a45506..263ce55 100644
--- a/Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tagged.pm
+++ b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait.pm
@@ -1,8 +1,7 @@
-package Data::MultiValued::AttributeTrait::Tagged;
+package Data::MultiValued::AttributeTrait;
use Moose::Role;
-use Data::MultiValued::Tags;
use Data::MultiValued::AttributeAccessors;
-use MooseX::Types::Moose qw(Str HashRef);
+use MooseX::Types::Moose qw(Str);
use Try::Tiny;
use namespace::autoclean;
@@ -14,6 +13,8 @@ has 'full_storage_slot' => (
);
sub _build_full_storage_slot { shift->name . '__MULTIVALUED_STORAGE__' }
+requires 'multivalue_storage_class';
+
around slots => sub {
my ($orig, $self) = @_;
return ($self->$orig(), $self->full_storage_slot);
@@ -22,7 +23,7 @@ around slots => sub {
sub set_full_storage {
my ($self,$instance) = @_;
- my $ret = Data::MultiValued::Tags->new();
+ my $ret = $self->multivalue_storage_class->new();
$self->associated_class->get_meta_instance->set_slot_value(
$instance,
$self->full_storage_slot,
@@ -59,13 +60,13 @@ after install_accessors => sub {
my $check = "has_$meth";
next unless $self->$check;
- my $type = "tagged_$meth";
+ my $type = "multi_$meth";
my $basename = $self->$meth;
die 'MultiValued attribute trait is not compatible with subref accessors'
if ref($basename);
- my $name = "${basename}_tagged";
+ my $name = "${basename}_multi";
$class->add_method(
$self->_process_accessors($type => $name,0)
@@ -73,7 +74,7 @@ after install_accessors => sub {
}
};
-sub load_tagged_value {
+sub load_multi_value {
my ($self,$instance,$opts) = @_;
my $value;my $found=1;
@@ -105,7 +106,7 @@ sub raw_clear_value {
);
}
-sub store_tagged_value {
+sub store_multi_value {
my ($self,$instance,$opts) = @_;
my $value = $self->get_raw_value($instance);
@@ -117,10 +118,10 @@ our $dyn_opts = {};
before get_value => sub {
my ($self,$instance) = @_;
- $self->load_tagged_value($instance,$dyn_opts);
+ $self->load_multi_value($instance,$dyn_opts);
};
-sub get_tagged_value {
+sub get_multi_value {
my ($self,$instance,$opts,$value) = @_;
local $dyn_opts = $opts;
@@ -131,16 +132,16 @@ sub get_tagged_value {
after set_initial_value => sub {
my ($self,$instance,$value) = @_;
- $self->store_tagged_value($instance,$dyn_opts);
+ $self->store_multi_value($instance,$dyn_opts);
};
after set_value => sub {
my ($self,$instance,$value) = @_;
- $self->store_tagged_value($instance,$dyn_opts);
+ $self->store_multi_value($instance,$dyn_opts);
};
-sub set_tagged_value {
+sub set_multi_value {
my ($self,$instance,$opts,$value) = @_;
local $dyn_opts = $opts;
@@ -151,10 +152,10 @@ sub set_tagged_value {
before has_value => sub {
my ($self,$instance) = @_;
- $self->load_tagged_value($instance,$dyn_opts);
+ $self->load_multi_value($instance,$dyn_opts);
};
-sub has_tagged_value {
+sub has_multi_value {
my ($self,$instance,$opts) = @_;
local $dyn_opts = $opts;
@@ -169,7 +170,7 @@ after clear_value => sub {
$self->full_storage($instance)->clear($dyn_opts);
};
-sub clear_tagged_value {
+sub clear_multi_value {
my ($self,$instance,$opts) = @_;
local $dyn_opts = $opts;
@@ -177,14 +178,14 @@ sub clear_tagged_value {
return $self->clear_value($instance);
}
-sub get_tagged_read_method {
+sub get_multi_read_method {
my $self = shift;
- return $self->get_read_method . '_tagged';
+ return $self->get_read_method . '_multi';
}
-sub get_tagged_write_method {
+sub get_multi_write_method {
my $self = shift;
- return $self->get_write_method . '_tagged';
+ return $self->get_write_method . '_multi';
}
sub _rebless_slot {
@@ -193,7 +194,7 @@ sub _rebless_slot {
my $st = $self->get_full_storage($instance);
return unless $st;
- bless $st, 'Data::MultiValued::Tags';
+ bless $st, $self->multivalue_storage_class;
$st->_rebless_storage;
}
@@ -206,8 +207,4 @@ sub _as_hash {
return $st->_as_hash;
}
-package Moose::Meta::Attribute::Custom::Trait::MultiValued::Tagged;{
-sub register_implementation { 'Data::MultiValued::AttributeTrait::Tagged' }
-}
-
1;
diff --git a/Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tags.pm b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tags.pm
new file mode 100644
index 0000000..fff5776
--- /dev/null
+++ b/Data-MultiValued/lib/Data/MultiValued/AttributeTrait/Tags.pm
@@ -0,0 +1,12 @@
+package Data::MultiValued::AttributeTrait::Tags;
+use Moose::Role;
+use Data::MultiValued::Tags;
+with 'Data::MultiValued::AttributeTrait';
+
+sub multivalue_storage_class { 'Data::MultiValued::Tags' };
+
+package Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags;{
+sub register_implementation { 'Data::MultiValued::AttributeTrait::Tags' }
+}
+
+1;