X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FMethod.pm;h=d5f352a40d1de20713a610b2a7e8a2cc94a75f8e;hp=baf51cc7acc222d7d43c3ab7c1610492d0be092a;hb=5176a3e41f75dc3f0de6049ac642087580f94680;hpb=a25ca8d637c040b2f929b1a23dd62ff63d85f5d1 diff --git a/lib/Mouse/Meta/Method.pm b/lib/Mouse/Meta/Method.pm index baf51cc..d5f352a 100755 --- a/lib/Mouse/Meta/Method.pm +++ b/lib/Mouse/Meta/Method.pm @@ -2,27 +2,37 @@ package Mouse::Meta::Method; use Mouse::Util qw(:meta); # enables strict and warnings use overload - '&{}' => 'body', + '&{}' => sub{ $_[0]->body }, fallback => 1, ; -sub new{ +sub wrap{ + my $class = shift; + + return $class->_new(@_); +} + +sub _new{ my($class, %args) = @_; + my $self = bless \%args, $class; - return bless \%args, $class; + if($class ne __PACKAGE__){ + $self->meta->_initialize_object($self, \%args); + } + return $self; } -sub body { $_[0]->{body} } -sub name { $_[0]->{name} } -sub package_name{ $_[0]->{package} } +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; + my($self) = @_; return $self->package_name . '::' . $self->name; } 1; - __END__ =head1 NAME @@ -31,7 +41,7 @@ Mouse::Meta::Method - A Mouse Method metaclass =head1 VERSION -This document describes Mouse version 0.37_06 +This document describes Mouse version 0.42 =head1 SEE ALSO