blob: f69c181950b934c87de4610a34828e56f14771b6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package MooseX::Extension;
use Moose ();
use Moose::Exporter;
use Moose::Util::MetaRole;
use Data::OptList qw(mkopt_hash);
my ($unimport, $on_unimport, $args);
sub import {
my $caller = caller;
shift;
$args = mkopt_hash(\@_);
my @also = grep { !defined $args->{$_} && delete $args->{$_} } keys %$args;
my $import;
($import, $unimport) = Moose::Exporter->build_import_methods(
also => \@also,
);
$args->{-on_import}->($caller) if defined $args->{-on_import};
$on_unimport = delete $args->{-on_unimport};
goto $import;
}
sub unimport {
my $caller = caller;
$on_unimport->($caller) if defined $on_unimport;
goto $unimport;
}
sub init_meta {
shift;
my %options = @_;
Moose->init_meta(%options);
Moose::Util::MetaRole::apply_metaclass_roles(
for_class => $options{for_class},
);
Moose::Util::MetaRole::apply_base_class_roles(
for_class => $options{for_class},
);
return Class::MOP::class_of($options{for_class});
}
1;
|