Commit | Line | Data |
9be81e19 |
1 | package Reaction::Role::Parameterized; |
2 | |
3 | use MooseX::Role::Parameterized (); |
4 | use Reaction::ClassExporter; |
5 | use Reaction::Class; |
6 | use Moose::Meta::Class; |
7 | |
8 | use namespace::clean -except => [ qw(meta) ]; |
9 | |
10 | override exports_for_package => sub { |
11 | my ($self, $package) = @_; |
12 | my %exports = $self->SUPER::exports_for_package($package); |
13 | delete $exports{class}; |
14 | return %exports; |
15 | }; |
16 | |
17 | override default_base => sub { () }; |
18 | |
19 | override exporter_for_package => sub { |
20 | my ($self) = @_; |
21 | my ($import) = Moose::Exporter->build_import_methods( |
22 | also => ['MooseX::Role::Parameterized'], |
23 | with_caller => ['role'], |
24 | ); |
25 | $import; |
26 | }; |
27 | |
28 | override next_import => sub { }; |
29 | |
30 | sub role (&) { |
31 | my $caller = shift; |
32 | my ($code) = @_; |
33 | &MooseX::Role::Parameterized::role($caller, sub { |
34 | my ($p, %args) = @_; |
35 | $args{operating_on} = Moose::Util::MetaRole::apply_metaroles( |
36 | for => $args{operating_on}->name, |
37 | role_metaroles => { |
38 | applied_attribute => ['Reaction::Role::Meta::Attribute'], |
39 | }, |
40 | ) if Moose->VERSION >= 1.9900; |
41 | $code->($p, %args); |
42 | }); |
43 | } |
44 | |
45 | __PACKAGE__->meta->make_immutable; |
46 | |
47 | |
48 | 1; |
49 | |
50 | =head1 NAME |
51 | |
52 | Reaction::Role |
53 | |
54 | =head1 DESCRIPTION |
55 | |
56 | =head1 SEE ALSO |
57 | |
58 | L<Moose::Role> |
59 | |
60 | =head1 AUTHORS |
61 | |
62 | See L<Reaction::Class> for authors. |
63 | |
64 | =head1 LICENSE |
65 | |
66 | See L<Reaction::Class> for the license. |
67 | |
68 | =cut |