X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FArray%2Ffirst.pm;h=5d4482b027d7abfd5508ea971b310d1d1a93234a;hb=ec86bdff10923f63141e6529c2178189a64c71b8;hp=d996f6c38b0e7b4e31539f62209f7e88c8c41069;hpb=e3181911a75bfb896df9ec013142348b1646acdf;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm b/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm index d996f6c..5d4482b 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/Array/first.pm @@ -4,12 +4,23 @@ use strict; use warnings; use List::Util (); +use Params::Util (); -our $VERSION = '1.13'; +our $VERSION = '1.19'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; -use base 'Moose::Meta::Method::Accessor::Native::Array::Reader'; +use Moose::Role; + +with 'Moose::Meta::Method::Accessor::Native::Reader' => { + -excludes => [ + qw( + _minimum_arguments + _maximum_arguments + _inline_check_arguments + ) + ] +}; sub _minimum_arguments { 1 } @@ -18,16 +29,22 @@ sub _maximum_arguments { 1 } sub _inline_check_arguments { my $self = shift; - return $self->_inline_throw_error( - q{'The argument passed to first must be a code reference'}) - . q{if $_[0] && ( ref $_[0] || q{} ) ne 'CODE';}; + return ( + 'if (!Params::Util::_CODELIKE($_[0])) {', + $self->_inline_throw_error( + '"The argument passed to first must be a code reference"', + ) . ';', + '}', + ); } sub _return_value { - my $self = shift; - my $slot_access = shift; + my $self = shift; + my ($slot_access) = @_; - return "&List::Util::first( \$_[0], \@{ ${slot_access} } )"; + return '&List::Util::first($_[0], @{ (' . $slot_access . ') })'; } +no Moose::Role; + 1;