diff options
author | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-01-24 22:14:50 +0000 |
---|---|---|
committer | groditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2008-01-24 22:14:50 +0000 |
commit | 32afff5dca9e4e124f35b72c05a44a7ca4c1399d (patch) | |
tree | ebb48b782b0b6440440fc759168859cc8b2675c5 /lib/Reaction/Role.pm | |
parent | 5ee24b95cec49b29e5508a91d7ae5815cb535ab0 (diff) | |
download | reaction-32afff5dca9e4e124f35b72c05a44a7ca4c1399d.tar.gz reaction-32afff5dca9e4e124f35b72c05a44a7ca4c1399d.zip |
Moose::Role fixed for new moose
Diffstat (limited to 'lib/Reaction/Role.pm')
-rw-r--r-- | lib/Reaction/Role.pm | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/lib/Reaction/Role.pm b/lib/Reaction/Role.pm index ea5b948..13815db 100644 --- a/lib/Reaction/Role.pm +++ b/lib/Reaction/Role.pm @@ -4,10 +4,28 @@ use Moose::Role (); use Reaction::ClassExporter; use Reaction::Class; use Moose::Meta::Class; + +use Sub::Name 'subname'; +use Scalar::Util qw/blessed reftype/; + #TODO: review for Reaction::Object switch / Reaction::Meta::Class -*Moose::Meta::Role::add_method = sub { - Moose::Meta::Class->can("add_method")->(@_); -}; +#lifted from class MOP as a temp fix (groditi) +*Moose::Meta::Role::add_method + = subname 'Moose::Meta::Role::add_method' => sub { + my ($self, $method_name, $code) = @_; + (defined $method_name && $method_name) + || confess "You must define a method name"; + + confess "Your code block must be a CODE reference" + unless 'CODE' eq reftype($code); + + my $method = $self->method_metaclass->wrap($code); + $self->get_method_map->{$method_name} = $method; + + my $full_name = ($self->name . '::' . $method_name); + $self->add_package_symbol("&${method_name}" => subname $full_name => $code); + }; + class Role which { @@ -18,9 +36,9 @@ class Role which { $exports{role} = sub { $self->do_role_sub($package, @_); }; return %exports; }; - + override next_import_package => sub { 'Moose::Role' }; - + override default_base => sub { () }; implements do_role_sub => as { @@ -31,7 +49,7 @@ class Role which { }; }; - + 1; =head1 NAME |