07723a978d7e66182b8349cd769ecf98a084643c
[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, %args) = @_;
17     my $self = bless \%args, $class;
18
19     if($class ne __PACKAGE__){
20         $self->meta->_initialize_object($self, \%args);
21     }
22     return $self;
23 }
24
25 sub body                 { $_[0]->{body}    }
26 sub name                 { $_[0]->{name}    }
27 sub package_name         { $_[0]->{package} }
28 sub associated_metaclass { $_[0]->{associated_metaclass} }
29
30 sub fully_qualified_name {
31     my($self) = @_;
32     return $self->package_name . '::' . $self->name;
33 }
34
35 1;
36 __END__
37
38 =head1 NAME
39
40 Mouse::Meta::Method - A Mouse Method metaclass
41
42 =head1 VERSION
43
44 This document describes Mouse version 0.45
45
46 =head1 SEE ALSO
47
48 L<Moose::Meta::Method>
49
50 L<Class::MOP::Method>
51
52 =cut