X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FUtil.pm;h=ad876880a4df7566f972568530381c6dfcf34a81;hb=8b1d510fd5c3d348d11dcbe07f313f43e4ac647f;hp=62370b1ddb5283a7d76134ca068d465b977dc467;hpb=c7d8fe950098e91780355ed7a91f066e682eb4a3;p=gitmo%2FMoose.git diff --git a/lib/Moose/Util.pm b/lib/Moose/Util.pm index 62370b1..ad87688 100644 --- a/lib/Moose/Util.pm +++ b/lib/Moose/Util.pm @@ -5,10 +5,9 @@ use warnings; use Sub::Exporter; use Scalar::Util 'blessed'; -use Carp 'confess'; -use Class::MOP 0.56; +use Class::MOP 0.57; -our $VERSION = '0.55_02'; +our $VERSION = '0.57'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -73,16 +72,9 @@ sub search_class_by_role { sub apply_all_roles { my $applicant = shift; - apply_all_roles_with_method( $applicant, 'apply', [@_] ); -} - -sub apply_all_roles_with_method { - my ( $applicant, $apply_method, $role_list ) = @_; - - confess "Must specify at least one role to apply to $applicant" - unless @$role_list; + Moose->throw_error("Must specify at least one role to apply to $applicant") unless @_; - my $roles = Data::OptList::mkopt($role_list); + my $roles = Data::OptList::mkopt( [@_] ); my $meta = ( blessed $applicant ? $applicant : find_meta($applicant) ); @@ -91,18 +83,17 @@ sub apply_all_roles_with_method { } ( $_->[0]->can('meta') && $_->[0]->meta->isa('Moose::Meta::Role') ) - || confess "You can only consume roles, " + || Moose->throw_error("You can only consume roles, " . $_->[0] - . " is not a Moose role" + . " is not a Moose role") foreach @$roles; if ( scalar @$roles == 1 ) { my ( $role, $params ) = @{ $roles->[0] }; - $role->meta->$apply_method( $meta, - ( defined $params ? %$params : () ) ); + $role->meta->apply( $meta, ( defined $params ? %$params : () ) ); } else { - Moose::Meta::Role->combine( @$roles )->$apply_method($meta); + Moose::Meta::Role->combine( @$roles )->apply($meta); } } @@ -229,13 +220,6 @@ actually used internally by both L and L, and the C<@roles> will be pre-processed through L to allow for the additional arguments to be passed. -=item B - -This function works just like C, except it allows -you to specify what method will be called on the role metaclass when -applying it to the C<$applicant>. This exists primarily so one can use -the C<< Moose::Meta::Role->apply_to_metaclass_instance() >> method. - =item B Returns the values of the C<$instance>'s fields keyed by the attribute names.