return sub { }
},
has => sub {
- return sub { }
+ my $caller = $CALLER;
+ return sub {
+ my $name = shift;
+ my %opts = @_;
+
+ $caller->meta->add_attribute($name => \%opts);
+ }
},
with => sub {
- return sub { }
+ return sub {
+ confess "Role does not currently support 'with'";
+ }
},
requires => sub {
return sub { }
}
sub unimport {
+ my $caller = caller;
+
+ no strict 'refs';
+ for my $keyword (keys %exports) {
+ next if $keyword eq 'meta'; # we don't delete this one
+ delete ${ $caller . '::' }{$keyword};
+ }
}
};