fixes for the applied_attribute stuff in moose 2
[catagits/Reaction.git] / lib / Reaction / Role / Parameterized.pm
CommitLineData
9be81e19 1package Reaction::Role::Parameterized;
2
3use MooseX::Role::Parameterized ();
4use Reaction::ClassExporter;
5use Reaction::Class;
6use Moose::Meta::Class;
7
8use namespace::clean -except => [ qw(meta) ];
9
10override 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
17override default_base => sub { () };
18
19override 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
28override next_import => sub { };
29
30sub 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
481;
49
50=head1 NAME
51
52Reaction::Role
53
54=head1 DESCRIPTION
55
56=head1 SEE ALSO
57
58L<Moose::Role>
59
60=head1 AUTHORS
61
62See L<Reaction::Class> for authors.
63
64=head1 LICENSE
65
66See L<Reaction::Class> for the license.
67
68=cut