r20898@agaton (orig r755): wreis | 2008-07-24 00:32:56 +0100
[catagits/Reaction.git] / lib / Reaction / Role.pm
CommitLineData
7adfd53f 1package Reaction::Role;
2
3use Moose::Role ();
4use Reaction::ClassExporter;
5use Reaction::Class;
6use Moose::Meta::Class;
9b2f4054 7
7adfd53f 8#TODO: review for Reaction::Object switch / Reaction::Meta::Class
7adfd53f 9
10class Role which {
11
12 override exports_for_package => sub {
13 my ($self, $package) = @_;
14 my %exports = $self->SUPER::exports_for_package($package);
15 delete $exports{class};
16 $exports{role} = sub { $self->do_role_sub($package, @_); };
17 return %exports;
18 };
9b2f4054 19
7adfd53f 20 override next_import_package => sub { 'Moose::Role' };
9b2f4054 21
7adfd53f 22 override default_base => sub { () };
23
9b2f4054 24 override add_method_to_target => sub {
25 my ($self, $target, $method) = @_;
26 $target->meta->alias_method(@$method);
27 };
28
7adfd53f 29 implements do_role_sub => as {
30 my ($self, $package, $role, $which, $setup) = @_;
31 confess "Invalid role declaration, should be: role Role which { ... }"
32 unless ($which eq 'which' && ref($setup) eq 'CODE');
33 $self->setup_and_cleanup($role, $setup);
34 };
35
36};
9b2f4054 37
7adfd53f 381;
39
40=head1 NAME
41
42Reaction::Role
43
44=head1 DESCRIPTION
45
46=head1 SEE ALSO
47
48L<Moose::Role>
49
50=head1 AUTHORS
51
52See L<Reaction::Class> for authors.
53
54=head1 LICENSE
55
56See L<Reaction::Class> for the license.
57
58=cut