summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2012-01-24 10:51:25 +0000
committerGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2012-01-24 10:51:25 +0000
commit2efedee43bcf77833037438d827643db1cde9116 (patch)
treee2c33cff90c89d3ac10935945c33fcd1e529014b /lib
parentBuild results of e9892ef (on master) (diff)
parentcache attributes per class, makes thinks faster (diff)
downloaddata-multivalued-2efedee43bcf77833037438d827643db1cde9116.tar.gz
data-multivalued-2efedee43bcf77833037438d827643db1cde9116.tar.bz2
data-multivalued-2efedee43bcf77833037438d827643db1cde9116.zip
Build results of f74481a (on master)
Diffstat (limited to 'lib')
-rw-r--r--lib/Data/MultiValued.pm4
-rw-r--r--lib/Data/MultiValued/AttributeAccessors.pm4
-rw-r--r--lib/Data/MultiValued/AttributeTrait.pm4
-rw-r--r--lib/Data/MultiValued/AttributeTrait/Ranges.pm6
-rw-r--r--lib/Data/MultiValued/AttributeTrait/Tags.pm6
-rw-r--r--lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm6
-rw-r--r--lib/Data/MultiValued/Exceptions.pm12
-rw-r--r--lib/Data/MultiValued/RangeContainer.pm4
-rw-r--r--lib/Data/MultiValued/Ranges.pm4
-rw-r--r--lib/Data/MultiValued/TagContainer.pm4
-rw-r--r--lib/Data/MultiValued/TagContainerForRanges.pm4
-rw-r--r--lib/Data/MultiValued/Tags.pm4
-rw-r--r--lib/Data/MultiValued/TagsAndRanges.pm4
-rw-r--r--lib/Data/MultiValued/UglySerializationHelperRole.pm62
14 files changed, 80 insertions, 48 deletions
diff --git a/lib/Data/MultiValued.pm b/lib/Data/MultiValued.pm
index e7a0e3c..3f2e964 100644
--- a/lib/Data/MultiValued.pm
+++ b/lib/Data/MultiValued.pm
@@ -1,6 +1,6 @@
package Data::MultiValued;
{
- $Data::MultiValued::VERSION = '0.0.3';
+ $Data::MultiValued::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::DIST = 'Data-MultiValued';
@@ -25,7 +25,7 @@ Data::MultiValued - store tag- and range-dependant data in a scalar or Moose att
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/AttributeAccessors.pm b/lib/Data/MultiValued/AttributeAccessors.pm
index 78ba975..470dfda 100644
--- a/lib/Data/MultiValued/AttributeAccessors.pm
+++ b/lib/Data/MultiValued/AttributeAccessors.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::AttributeAccessors;
{
- $Data::MultiValued::AttributeAccessors::VERSION = '0.0.3';
+ $Data::MultiValued::AttributeAccessors::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::AttributeAccessors::DIST = 'Data-MultiValued';
@@ -130,7 +130,7 @@ Data::MultiValued::AttributeAccessors - method meta-class for multi-valued attri
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/AttributeTrait.pm b/lib/Data/MultiValued/AttributeTrait.pm
index 1e90c94..24c6e03 100644
--- a/lib/Data/MultiValued/AttributeTrait.pm
+++ b/lib/Data/MultiValued/AttributeTrait.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::AttributeTrait;
{
- $Data::MultiValued::AttributeTrait::VERSION = '0.0.3';
+ $Data::MultiValued::AttributeTrait::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::AttributeTrait::DIST = 'Data-MultiValued';
@@ -287,7 +287,7 @@ Data::MultiValued::AttributeTrait - "base role" for traits of multi-valued Moose
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/AttributeTrait/Ranges.pm b/lib/Data/MultiValued/AttributeTrait/Ranges.pm
index a221a20..654a78f 100644
--- a/lib/Data/MultiValued/AttributeTrait/Ranges.pm
+++ b/lib/Data/MultiValued/AttributeTrait/Ranges.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::AttributeTrait::Ranges;
{
- $Data::MultiValued::AttributeTrait::Ranges::VERSION = '0.0.3';
+ $Data::MultiValued::AttributeTrait::Ranges::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::AttributeTrait::Ranges::DIST = 'Data-MultiValued';
@@ -19,7 +19,7 @@ sub opts_to_pass_get { qw(at) }
package Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges;
{
- $Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges::VERSION = '0.0.3';
+ $Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges::VERSION = '0.0.1_5';
}
{
$Moose::Meta::Attribute::Custom::Trait::MultiValued::Ranges::DIST = 'Data-MultiValued';
@@ -40,7 +40,7 @@ Data::MultiValued::AttributeTrait::Ranges - attribute traits for attributes hold
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/AttributeTrait/Tags.pm b/lib/Data/MultiValued/AttributeTrait/Tags.pm
index 63f10ac..63572c5 100644
--- a/lib/Data/MultiValued/AttributeTrait/Tags.pm
+++ b/lib/Data/MultiValued/AttributeTrait/Tags.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::AttributeTrait::Tags;
{
- $Data::MultiValued::AttributeTrait::Tags::VERSION = '0.0.3';
+ $Data::MultiValued::AttributeTrait::Tags::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::AttributeTrait::Tags::DIST = 'Data-MultiValued';
@@ -19,7 +19,7 @@ sub opts_to_pass_get { qw(tag) }
package Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags;
{
- $Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags::VERSION = '0.0.3';
+ $Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags::VERSION = '0.0.1_5';
}
{
$Moose::Meta::Attribute::Custom::Trait::MultiValued::Tags::DIST = 'Data-MultiValued';
@@ -40,7 +40,7 @@ Data::MultiValued::AttributeTrait::Tags - attribute traits for attributes holdin
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm b/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm
index 381c197..ab1643f 100644
--- a/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm
+++ b/lib/Data/MultiValued/AttributeTrait/TagsAndRanges.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::AttributeTrait::TagsAndRanges;
{
- $Data::MultiValued::AttributeTrait::TagsAndRanges::VERSION = '0.0.3';
+ $Data::MultiValued::AttributeTrait::TagsAndRanges::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::AttributeTrait::TagsAndRanges::DIST = 'Data-MultiValued';
@@ -19,7 +19,7 @@ sub opts_to_pass_get { qw(at tag) }
package Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges;
{
- $Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges::VERSION = '0.0.3';
+ $Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges::VERSION = '0.0.1_5';
}
{
$Moose::Meta::Attribute::Custom::Trait::MultiValued::TagsAndRanges::DIST = 'Data-MultiValued';
@@ -40,7 +40,7 @@ Data::MultiValued::AttributeTrait::TagsAndRanges - attribute traits for attribut
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/Exceptions.pm b/lib/Data/MultiValued/Exceptions.pm
index 311b1f8..84de506 100644
--- a/lib/Data/MultiValued/Exceptions.pm
+++ b/lib/Data/MultiValued/Exceptions.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::Exceptions;
{
- $Data::MultiValued::Exceptions::VERSION = '0.0.3';
+ $Data::MultiValued::Exceptions::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Exceptions::DIST = 'Data-MultiValued';
@@ -11,7 +11,7 @@ package Data::MultiValued::Exceptions;
package Data::MultiValued::Exceptions::NotFound;
{
- $Data::MultiValued::Exceptions::NotFound::VERSION = '0.0.3';
+ $Data::MultiValued::Exceptions::NotFound::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Exceptions::NotFound::DIST = 'Data-MultiValued';
@@ -44,7 +44,7 @@ sub as_string {
package Data::MultiValued::Exceptions::TagNotFound;
{
- $Data::MultiValued::Exceptions::TagNotFound::VERSION = '0.0.3';
+ $Data::MultiValued::Exceptions::TagNotFound::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Exceptions::TagNotFound::DIST = 'Data-MultiValued';
@@ -60,7 +60,7 @@ has '+message' => (
package Data::MultiValued::Exceptions::RangeNotFound;
{
- $Data::MultiValued::Exceptions::RangeNotFound::VERSION = '0.0.3';
+ $Data::MultiValued::Exceptions::RangeNotFound::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Exceptions::RangeNotFound::DIST = 'Data-MultiValued';
@@ -76,7 +76,7 @@ has '+message' => (
package Data::MultiValued::Exceptions::BadRange;
{
- $Data::MultiValued::Exceptions::BadRange::VERSION = '0.0.3';
+ $Data::MultiValued::Exceptions::BadRange::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Exceptions::BadRange::DIST = 'Data-MultiValued';
@@ -112,7 +112,7 @@ Data::MultiValued::Exceptions - exception classes
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/RangeContainer.pm b/lib/Data/MultiValued/RangeContainer.pm
index 293c58b..6ee0e47 100644
--- a/lib/Data/MultiValued/RangeContainer.pm
+++ b/lib/Data/MultiValued/RangeContainer.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::RangeContainer;
{
- $Data::MultiValued::RangeContainer::VERSION = '0.0.3';
+ $Data::MultiValued::RangeContainer::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::RangeContainer::DIST = 'Data-MultiValued';
@@ -248,7 +248,7 @@ Data::MultiValued::RangeContainer - container for ranged values
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/Ranges.pm b/lib/Data/MultiValued/Ranges.pm
index 1168960..9beb1a8 100644
--- a/lib/Data/MultiValued/Ranges.pm
+++ b/lib/Data/MultiValued/Ranges.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::Ranges;
{
- $Data::MultiValued::Ranges::VERSION = '0.0.3';
+ $Data::MultiValued::Ranges::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Ranges::DIST = 'Data-MultiValued';
@@ -93,7 +93,7 @@ Data::MultiValued::Ranges - Handle values with validity ranges
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/TagContainer.pm b/lib/Data/MultiValued/TagContainer.pm
index 39a3fb0..949440c 100644
--- a/lib/Data/MultiValued/TagContainer.pm
+++ b/lib/Data/MultiValued/TagContainer.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::TagContainer;
{
- $Data::MultiValued::TagContainer::VERSION = '0.0.3';
+ $Data::MultiValued::TagContainer::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::TagContainer::DIST = 'Data-MultiValued';
@@ -126,7 +126,7 @@ Data::MultiValued::TagContainer - container for tagged values
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/TagContainerForRanges.pm b/lib/Data/MultiValued/TagContainerForRanges.pm
index ad50dff..5dc31ea 100644
--- a/lib/Data/MultiValued/TagContainerForRanges.pm
+++ b/lib/Data/MultiValued/TagContainerForRanges.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::TagContainerForRanges;
{
- $Data::MultiValued::TagContainerForRanges::VERSION = '0.0.3';
+ $Data::MultiValued::TagContainerForRanges::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::TagContainerForRanges::DIST = 'Data-MultiValued';
@@ -68,7 +68,7 @@ Data::MultiValued::TagContainerForRanges - container for tagged values that are
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 DESCRIPTION
diff --git a/lib/Data/MultiValued/Tags.pm b/lib/Data/MultiValued/Tags.pm
index 20ddd50..6d213d4 100644
--- a/lib/Data/MultiValued/Tags.pm
+++ b/lib/Data/MultiValued/Tags.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::Tags;
{
- $Data::MultiValued::Tags::VERSION = '0.0.3';
+ $Data::MultiValued::Tags::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::Tags::DIST = 'Data-MultiValued';
@@ -90,7 +90,7 @@ Data::MultiValued::Tags - Handle values with tags
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/TagsAndRanges.pm b/lib/Data/MultiValued/TagsAndRanges.pm
index 6aa1fbb..e75f0f5 100644
--- a/lib/Data/MultiValued/TagsAndRanges.pm
+++ b/lib/Data/MultiValued/TagsAndRanges.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::TagsAndRanges;
{
- $Data::MultiValued::TagsAndRanges::VERSION = '0.0.3';
+ $Data::MultiValued::TagsAndRanges::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::TagsAndRanges::DIST = 'Data-MultiValued';
@@ -103,7 +103,7 @@ Data::MultiValued::TagsAndRanges - Handle values with tags and validity ranges
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS
diff --git a/lib/Data/MultiValued/UglySerializationHelperRole.pm b/lib/Data/MultiValued/UglySerializationHelperRole.pm
index 9913a7d..2ebe831 100644
--- a/lib/Data/MultiValued/UglySerializationHelperRole.pm
+++ b/lib/Data/MultiValued/UglySerializationHelperRole.pm
@@ -1,6 +1,6 @@
package Data::MultiValued::UglySerializationHelperRole;
{
- $Data::MultiValued::UglySerializationHelperRole::VERSION = '0.0.3';
+ $Data::MultiValued::UglySerializationHelperRole::VERSION = '0.0.1_5';
}
{
$Data::MultiValued::UglySerializationHelperRole::DIST = 'Data-MultiValued';
@@ -16,10 +16,8 @@ sub new_in_place {
my $self = bless $hash,$class;
- for my $attr ($class->meta->get_all_attributes) {
- if ($attr->does('Data::MultiValued::AttributeTrait')) {
- $attr->_rebless_slot($self);
- }
+ for my $attr (@{$class->_dmv_multi_attrs}) {
+ $attr->_rebless_slot($self);
}
return $self;
}
@@ -29,20 +27,54 @@ sub as_hash {
my ($self) = @_;
my %ret = %$self;
- for my $attr ($self->meta->get_all_attributes) {
- if ($attr->does('Data::MultiValued::AttributeTrait')) {
- my $st = $attr->_as_hash($self);
- if ($st) {
- $ret{$attr->full_storage_slot} = $st;
- }
- else {
- delete $ret{$attr->full_storage_slot};
- }
+ for my $attr (@{$self->_dmv_multi_attrs}) {
+ my $st = $attr->_as_hash($self);
+ if ($st) {
+ $ret{$attr->full_storage_slot} = $st;
+ }
+ else {
+ delete $ret{$attr->full_storage_slot};
}
}
return \%ret;
}
+{
+my (
+ %all_attrs_for_class,
+ %tagged_attrs_for_class,
+ %ranged_attrs_for_class,
+ %multi_attrs_for_class,
+);
+
+sub _dmv_all_attrs {
+ my ($class) = @_;$class=ref($class)||$class;
+
+ return $all_attrs_for_class{$class} //= [$class->meta->get_all_attributes];
+}
+sub _dmv_tagged_attrs {
+ my ($class) = @_;$class=ref($class)||$class;
+
+ return $tagged_attrs_for_class{$class} //=
+ [ grep { $_->does('Data::MultiValued::AttributeTrait::Tags') }
+ @{$class->_dmv_all_attrs} ];
+}
+sub _dmv_ranged_attrs {
+ my ($class) = @_;$class=ref($class)||$class;
+
+ return $ranged_attrs_for_class{$class} //=
+ [ grep { $_->does('Data::MultiValued::AttributeTrait::Ranges') }
+ @{$class->_dmv_all_attrs} ];
+}
+sub _dmv_multi_attrs {
+ my ($class) = @_;$class=ref($class)||$class;
+
+ return $multi_attrs_for_class{$class} //=
+ [ grep { $_->does('Data::MultiValued::AttributeTrait') }
+ @{$class->_dmv_all_attrs} ];
+}
+}
+
1;
@@ -57,7 +89,7 @@ Data::MultiValued::UglySerializationHelperRole - only use this if you know what
=head1 VERSION
-version 0.0.3
+version 0.0.1_5
=head1 SYNOPSIS