use strict;
use warnings;
-use Mouse::Util qw/get_code_info not_supported/;
-use Scalar::Util qw/blessed/;
+use Mouse::Util qw/get_code_info not_supported load_class/;
+use Scalar::Util qw/blessed weaken/;
{
||= $class->_new(package => $package_name, @args);
}
- sub Mouse::class_of{
+ sub class_of{
my($class_or_instance) = @_;
return undef unless defined $class_or_instance;
return $METACLASS_CACHE{ blessed($class_or_instance) || $class_or_instance };
sub has_attribute { exists $_[0]->{attributes}->{$_[1]} }
sub get_attribute { $_[0]->{attributes}->{$_[1]} }
sub get_attribute_list{ keys %{$_[0]->{attributes}} }
+sub remove_attribute { delete $_[0]->{attributes}->{$_[1]} }
sub namespace{
my $name = $_[0]->{package};
}
sub get_method{
- Carp::croak("get_method() is not yet implemented");
+ my($self, $method_name) = @_;
+
+ if($self->has_method($method_name)){
+ my $method_metaclass = $self->method_metaclass;
+ load_class($method_metaclass);
+
+ my $package = $self->name;
+ return $method_metaclass->new(
+ body => $package->can($method_name),
+ name => $method_name,
+ package => $package,
+ );
+ }
+
+ return undef;
}
sub get_method_list {\r