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 }
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;