755cb683f21a6ce82f99807fc0077d75bcf12bad
[gitmo/Mouse.git] / lib / Mouse / Meta / Method.pm
1 package Mouse::Meta::Method;
2 use Mouse::Util qw(:meta); # enables strict and warnings
3
4 use overload
5     '&{}' => sub{ $_[0]->body },
6     fallback => 1,
7 ;
8
9 sub wrap{
10     my $class = shift;
11
12     return $class->_new(@_);
13 }
14
15 sub _new{
16     my $class = shift;
17     return $class->meta->new_object(@_)
18         if $class ne __PACKAGE__;
19
20     return bless {@_}, $class;
21 }
22
23 sub body                 { $_[0]->{body}    }
24 sub name                 { $_[0]->{name}    }
25 sub package_name         { $_[0]->{package} }
26 sub associated_metaclass { $_[0]->{associated_metaclass} }
27
28 sub fully_qualified_name {
29     my $self = shift;
30     return $self->package_name . '::' . $self->name;
31 }
32
33 1;
34 __END__
35
36 =head1 NAME
37
38 Mouse::Meta::Method - A Mouse Method metaclass
39
40 =head1 VERSION
41
42 This document describes Mouse version 0.40_07
43
44 =head1 SEE ALSO
45
46 L<Moose::Meta::Method>
47
48 L<Class::MOP::Method>
49
50 =cut