X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FRole.pm;h=5d1c57fea6de718f53a6aaf627c3be03fa062797;hb=cfa6d970245f1bbc9330c0e4bb3342356a43ac16;hp=f29dae0c68cf35579aeb1d6fa1b7e7ef030eb42b;hpb=1b9e472d8c7e704eced9b2ea83194f83f0265018;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Role.pm b/lib/Mouse/Meta/Role.pm index f29dae0..5d1c57f 100644 --- a/lib/Mouse/Meta/Role.pm +++ b/lib/Mouse/Meta/Role.pm @@ -2,10 +2,9 @@ package Mouse::Meta::Role; use strict; use warnings; -use Mouse::Util qw(not_supported english_list); +use Mouse::Util qw(:meta not_supported english_list get_code_info); use Mouse::Meta::Module; - -use base qw(Mouse::Meta::Module); +our @ISA = qw(Mouse::Meta::Module); sub method_metaclass(){ 'Mouse::Meta::Role::Method' } # required for get_method() @@ -19,10 +18,12 @@ sub _construct_meta { $args{required_methods} ||= []; $args{roles} ||= []; -# return Mouse::Meta::Class->initialize($class)->new_object(%args) -# if $class ne __PACKAGE__; + my $self = bless \%args, ref($class) || $class; + if($class ne __PACKAGE__){ + $self->meta->_initialize_object($self, \%args); + } - return bless \%args, ref($class) || $class; + return $self; } sub create_anon_role{ @@ -41,8 +42,7 @@ sub get_required_method_list{ } sub add_required_methods { - my $self = shift; - my @methods = @_; + my($self, @methods) = @_; push @{$self->{required_methods}}, @methods; } @@ -417,3 +417,14 @@ sub does_role { 1; +__END__ + +=head1 NAME + +Mouse::Meta::Role - The Mouse Role metaclass + +=head1 SEE ALSO + +L + +=cut