summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-12-12 19:04:24 -0600
committerJesse Luehrs <doy@tozt.net>2009-12-12 19:04:24 -0600
commit83bd35ab0d35bdbd61e826cd4435fc4042d26783 (patch)
treefa612362e2d588957cd1566b0464a6ab78d89298
parentf5437ccff7fc47fd7ba74b470f0ab0fa85e9c4d5 (diff)
downloadmoosex-abc-83bd35ab0d35bdbd61e826cd4435fc4042d26783.tar.gz
moosex-abc-83bd35ab0d35bdbd61e826cd4435fc4042d26783.zip
use new exporter features
-rw-r--r--lib/MooseX/ABC.pm25
1 files changed, 8 insertions, 17 deletions
diff --git a/lib/MooseX/ABC.pm b/lib/MooseX/ABC.pm
index d6c1b68..11ec50b 100644
--- a/lib/MooseX/ABC.pm
+++ b/lib/MooseX/ABC.pm
@@ -1,7 +1,6 @@
package MooseX::ABC;
use Moose ();
use Moose::Exporter;
-use Moose::Util::MetaRole;
=head1 NAME
@@ -53,29 +52,21 @@ here, an error will be thrown when compiling the class.
=cut
sub requires {
- my $caller = shift;
- my $meta = Class::MOP::class_of($caller);
- $meta->add_required_method(@_);
+ shift->add_required_method(@_);
}
-Moose::Exporter->setup_import_methods(
- with_caller => [qw(requires)],
+my ($import, $unimport, $init_meta) = Moose::Exporter->build_import_methods(
+ with_meta => [qw(requires)],
+ install => [qw(import unimport)],
+ metaclass_roles => ['MooseX::ABC::Trait::Class'],
+ base_class_roles => ['MooseX::ABC::Role::Object'],
);
sub init_meta {
- shift;
- my %options = @_;
+ my ($package, %options) = @_;
Carp::confess("Can't make a role into an abstract base class")
if Class::MOP::class_of($options{for_class})->isa('Moose::Meta::Role');
- Moose::Util::MetaRole::apply_base_class_roles(
- for_class => $options{for_class},
- roles => ['MooseX::ABC::Role::Object'],
- );
- Moose::Util::MetaRole::apply_metaclass_roles(
- for_class => $options{for_class},
- metaclass_roles => ['MooseX::ABC::Trait::Class'],
- );
- return Class::MOP::class_of($options{for_class});
+ goto $init_meta if $init_meta;
}
=head1 TODO