package MooseX::AttributeHelpers::MethodProvider::Array;
use Moose::Role;
-our $VERSION = '0.03';
+our $VERSION = '0.05';
our $AUTHORITY = 'cpan:STEVAN';
with 'MooseX::AttributeHelpers::MethodProvider::List';
sub push : method {
my ($attr, $reader, $writer) = @_;
- if ($attr->has_container_type) {
- my $container_type_constraint = $attr->container_type_constraint;
+ if ($attr->has_type_constraint && $attr->type_constraint->isa('Moose::Meta::TypeConstraint::Parameterized')) {
+ my $container_type_constraint = $attr->type_constraint->type_parameter;
return sub {
my $instance = CORE::shift;
$container_type_constraint->check($_)
sub unshift : method {
my ($attr, $reader, $writer) = @_;
- if ($attr->has_container_type) {
- my $container_type_constraint = $attr->container_type_constraint;
+ if ($attr->has_type_constraint && $attr->type_constraint->isa('Moose::Meta::TypeConstraint::Parameterized')) {
+ my $container_type_constraint = $attr->type_constraint->type_parameter;
return sub {
my $instance = CORE::shift;
$container_type_constraint->check($_)
sub set : method {
my ($attr, $reader, $writer) = @_;
- if ($attr->has_container_type) {
- my $container_type_constraint = $attr->container_type_constraint;
+ if ($attr->has_type_constraint && $attr->type_constraint->isa('Moose::Meta::TypeConstraint::Parameterized')) {
+ my $container_type_constraint = $attr->type_constraint->type_parameter;
return sub {
($container_type_constraint->check($_[2]))
|| confess "Value " . ($_[2]||'undef') . " did not pass container type constraint";
sub insert : method {
my ($attr, $reader, $writer) = @_;
- if ($attr->has_container_type) {
- my $container_type_constraint = $attr->container_type_constraint;
+ if ($attr->has_type_constraint && $attr->type_constraint->isa('Moose::Meta::TypeConstraint::Parameterized')) {
+ my $container_type_constraint = $attr->type_constraint->type_parameter;
return sub {
($container_type_constraint->check($_[2]))
|| confess "Value " . ($_[2]||'undef') . " did not pass container type constraint";
- splice @{$reader->($_[0])}, $_[1], 0, $_[2];
+ CORE::splice @{$reader->($_[0])}, $_[1], 0, $_[2];
};
}
else {
return sub {
- splice @{$reader->($_[0])}, $_[1], 0, $_[2];
+ CORE::splice @{$reader->($_[0])}, $_[1], 0, $_[2];
};
}
}