X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FMethod.pm;h=ebbcbf6de3b8053ee23edfb97a472d6a8b1643db;hb=935400114c35ad1b2481c48ff471e180e9c93d93;hp=1959f9da465b5504d69cfd33e13f9ef4c27c50c6;hpb=9b9e4b6566015d6d6e2aa6c745644174efa74623;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Method.pm b/lib/Mouse/Meta/Method.pm index 1959f9d..ebbcbf6 100755 --- a/lib/Mouse/Meta/Method.pm +++ b/lib/Mouse/Meta/Method.pm @@ -2,19 +2,28 @@ package Mouse::Meta::Method; use Mouse::Util qw(:meta); # enables strict and warnings use overload - '&{}' => 'body', + '&{}' => sub{ $_[0]->body }, fallback => 1, ; -sub new{ - my($class, %args) = @_; +sub wrap{ + my $class = shift; - return bless \%args, $class; + return $class->_new(@_); } -sub body { $_[0]->{body} } -sub name { $_[0]->{name} } -sub package_name{ $_[0]->{package} } +sub _new{ + my $class = shift; + return $class->meta->new_object(@_) + if $class ne __PACKAGE__; + + return bless {@_}, $class; +} + +sub body { $_[0]->{body} } +sub name { $_[0]->{name} } +sub package_name { $_[0]->{package} } +sub associated_metaclass { $_[0]->{associated_metaclass} } sub fully_qualified_name { my $self = shift; @@ -22,7 +31,6 @@ sub fully_qualified_name { } 1; - __END__ =head1 NAME @@ -31,7 +39,7 @@ Mouse::Meta::Method - A Mouse Method metaclass =head1 VERSION -This document describes Mouse version 0.39 +This document describes Mouse version 0.40 =head1 SEE ALSO