X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FString%2Freplace.pm;h=b00d96db54cc325e9c3cff3a309d7e63dfd00c48;hb=HEAD;hp=1dbcea117e91c393c3b3bfdf689f4c9f1170290b;hpb=bb09ad9144e7ee7b2cad8a90725267f591346406;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/String/replace.pm b/lib/Moose/Meta/Method/Accessor/Native/String/replace.pm index 1dbcea1..b00d96d 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/String/replace.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/String/replace.pm @@ -6,22 +6,9 @@ use warnings; use Moose::Util (); use Params::Util (); -our $VERSION = '1.17'; -$VERSION = eval $VERSION; -our $AUTHORITY = 'cpan:STEVAN'; - use Moose::Role; -with 'Moose::Meta::Method::Accessor::Native::Writer' => { - -excludes => [ - qw( - _minimum_arguments - _maximum_arguments - _inline_check_arguments - _inline_optimized_set_new_value - ) - ] - }; +with 'Moose::Meta::Method::Accessor::Native::Writer'; sub _minimum_arguments { 1 } @@ -30,25 +17,44 @@ sub _maximum_arguments { 2 } sub _inline_check_arguments { my $self = shift; - return $self->_inline_throw_error( - q{'The first argument passed to replace must be a string or regexp reference'} - ) - . q{ unless Moose::Util::_STRINGLIKE0( $_[0] ) || Params::Util::_REGEX( $_[0] );} - . $self->_inline_throw_error( - q{'The second argument passed to replace must be a string or code reference'} - ) . q{ unless Moose::Util::_STRINGLIKE0( $_[1] ) || Params::Util::_CODELIKE( $_[1] );}; + return ( + 'if (!Moose::Util::_STRINGLIKE0($_[0]) && !Params::Util::_REGEX($_[0])) {', + $self->_inline_throw_error( + '"The first argument passed to replace must be a string or ' + . 'regexp reference"' + ) . ';', + '}', + 'if (!Moose::Util::_STRINGLIKE0($_[1]) && !Params::Util::_CODELIKE($_[1])) {', + $self->_inline_throw_error( + '"The second argument passed to replace must be a string or ' + . 'code reference"' + ) . ';', + '}', + ); } sub _potential_value { - my ( $self, $slot_access ) = @_; - - return "( do { my \$val = $slot_access; ref \$_[1] ? \$val =~ s/\$_[0]/\$_[1]->()/e : \$val =~ s/\$_[0]/\$_[1]/; \$val } )"; + my $self = shift; + my ($slot_access) = @_; + + return '(do { ' + . 'my $val = ' . $slot_access . '; ' + . 'ref $_[1] ' + . '? $val =~ s/$_[0]/$_[1]->()/e ' + . ': $val =~ s/$_[0]/$_[1]/; ' + . '$val; ' + . '})'; } sub _inline_optimized_set_new_value { - my ( $self, $inv, $new, $slot_access ) = @_; + my $self = shift; + my ($inv, $new, $slot_access) = @_; - return "if ( ref \$_[1] ) { $slot_access =~ s/\$_[0]/\$_[1]->()/e; } else { $slot_access =~ s/\$_[0]/\$_[1]/; }"; + return ( + 'ref $_[1]', + '? ' . $slot_access . ' =~ s/$_[0]/$_[1]->()/e', + ': ' . $slot_access . ' =~ s/$_[0]/$_[1]/;', + ); } no Moose::Role;