use warnings;
use Carp 'confess';
-use Scalar::Util 'blessed';
+use Scalar::Util qw/blessed weaken/;
sub new {
my $class = shift;
if exists $args{isa};
my $attribute = $self->new(%args);
- $attribute->_create_args(\%args);
- my $meta = $class->meta;
+ $attribute->_create_args(\%args);
- $meta->add_attribute($attribute);
+ $class->add_attribute($attribute);
# install an accessor
if ($attribute->_is_metadata eq 'rw' || $attribute->_is_metadata eq 'ro') {
my $accessor = $attribute->generate_accessor;
- no strict 'refs';
- *{ $class . '::' . $name } = $accessor;
+ $class->add_method($name => $accessor);
}
for my $method (qw/predicate clearer/) {
if ($attribute->$predicate) {
my $generator = "generate_$method";
my $coderef = $attribute->$generator;
- no strict 'refs';
- *{ $class . '::' . $attribute->$method } = $coderef;
+ $class->add_method($attribute->$method => $coderef);
}
}
if ($attribute->has_handles) {
my $method_map = $attribute->generate_handles;
for my $method_name (keys %$method_map) {
- no strict 'refs';
- *{ $class . '::' . $method_name } = $method_map->{$method_name};
+ $class->add_method($method_name => $method_map->{$method_name});
}
}
after => $args->{trigger},
};
}
+ elsif (ref($args->{trigger}) eq 'HASH') {
+ Carp::carp "HASH-based form of trigger is deprecated. Please switch back to using the coderef form of trigger.";
+ }
- confess "Trigger must be a CODE or HASH ref on attribute ($name)"
+ confess "Trigger must be a CODE ref on attribute ($name)"
if ref($args->{trigger}) ne 'HASH';
}
my $class = shift;
my $name = shift;
- for my $super ($class->meta->linearized_isa) {
+ for my $super ($class->linearized_isa) {
my $super_attr = $super->can("meta") && $super->meta->get_attribute($name)
or next;
return %{ $super_attr->_create_args };