X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FMethod%2FWrapped.pm;h=9c16164dba635a403548069a31899a902985ac02;hb=5d10c516c73e34da6e350bc567aaf8c272428c9b;hp=4e6d95f9c1edddb3f7571274673f7cfae11ec921;hpb=ebce55398177423965f0582686a812fe79e20d70;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Method/Wrapped.pm b/lib/Class/MOP/Method/Wrapped.pm index 4e6d95f..9c16164 100644 --- a/lib/Class/MOP/Method/Wrapped.pm +++ b/lib/Class/MOP/Method/Wrapped.pm @@ -7,7 +7,8 @@ use warnings; use Carp 'confess'; use Scalar::Util 'blessed'; -our $VERSION = '0.62'; +our $VERSION = '0.76'; +$VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; use base 'Class::MOP::Method'; @@ -91,27 +92,37 @@ sub wrap { package_name => $params{package_name} || $code->package_name, name => $params{name} || $code->name, ); - $method->{'%!modifier_table'} = $modifier_table; + $method->{'modifier_table'} = $modifier_table; $method; } sub get_original_method { my $code = shift; - $code->{'%!modifier_table'}->{orig}; + $code->{'modifier_table'}->{orig}; } sub add_before_modifier { my $code = shift; my $modifier = shift; - unshift @{$code->{'%!modifier_table'}->{before}} => $modifier; - $_build_wrapped_method->($code->{'%!modifier_table'}); + unshift @{$code->{'modifier_table'}->{before}} => $modifier; + $_build_wrapped_method->($code->{'modifier_table'}); +} + +sub before_modifiers { + my $code = shift; + return @{$code->{'modifier_table'}->{before}}; } sub add_after_modifier { my $code = shift; my $modifier = shift; - push @{$code->{'%!modifier_table'}->{after}} => $modifier; - $_build_wrapped_method->($code->{'%!modifier_table'}); + push @{$code->{'modifier_table'}->{after}} => $modifier; + $_build_wrapped_method->($code->{'modifier_table'}); +} + +sub after_modifiers { + my $code = shift; + return @{$code->{'modifier_table'}->{after}}; } { @@ -132,15 +143,20 @@ sub add_after_modifier { sub add_around_modifier { my $code = shift; my $modifier = shift; - unshift @{$code->{'%!modifier_table'}->{around}->{methods}} => $modifier; - $code->{'%!modifier_table'}->{around}->{cache} = $compile_around_method->( - @{$code->{'%!modifier_table'}->{around}->{methods}}, - $code->{'%!modifier_table'}->{orig}->body + unshift @{$code->{'modifier_table'}->{around}->{methods}} => $modifier; + $code->{'modifier_table'}->{around}->{cache} = $compile_around_method->( + @{$code->{'modifier_table'}->{around}->{methods}}, + $code->{'modifier_table'}->{orig}->body ); - $_build_wrapped_method->($code->{'%!modifier_table'}); + $_build_wrapped_method->($code->{'modifier_table'}); } } +sub around_modifiers { + my $code = shift; + return @{$code->{'modifier_table'}->{around}->{methods}}; +} + 1; __END__ @@ -190,6 +206,19 @@ see the section in L. =back +These three methods each returna list of method modifiers I. + +=over 4 + +=item B + +=item B + +=item B + +=back + =head1 AUTHORS Stevan Little Estevan@iinteractive.comE