X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FAccessor%2FNative%2FHash%2Faccessor.pm;h=9ed17e5bfb83696555177cf07ae5da4a820fdf5d;hb=00bbc132f9e1cb2b1a44aa287887cafa27a84577;hp=7bce603e6a5cfe66d683fc6a351c3df2d492020b;hpb=f4b86ac0e1fd7ff8a180f2f8332821170db5371e;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm b/lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm index 7bce603..9ed17e5 100644 --- a/lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm +++ b/lib/Moose/Meta/Method/Accessor/Native/Hash/accessor.pm @@ -3,80 +3,57 @@ package Moose::Meta::Method::Accessor::Native::Hash::accessor; use strict; use warnings; -our $VERSION = '1.16'; -$VERSION = eval $VERSION; -our $AUTHORITY = 'cpan:STEVAN'; - use Moose::Role; -with 'Moose::Meta::Method::Accessor::Native::Hash::set' => { - -excludes => [ - qw( - _generate_method - _minimum_arguments - _maximum_arguments - _inline_check_arguments - _return_value - ) - ] - }, - 'Moose::Meta::Method::Accessor::Native::Hash::get' => { - -excludes => [ - qw( - _generate_method - _minimum_arguments - _maximum_arguments - _inline_check_argument_count - _inline_process_arguments - ) - ] - }; +with 'Moose::Meta::Method::Accessor::Native::Hash::set', + 'Moose::Meta::Method::Accessor::Native::Hash::get'; -sub _generate_method { +sub _inline_process_arguments { my $self = shift; + $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_process_arguments(@_); +} - my $inv = '$self'; - - my $code = 'sub {'; - $code .= "\n" . $self->_inline_pre_body(@_); - - $code .= "\n" . 'my $self = shift;'; - - $code .= "\n" . $self->_inline_curried_arguments; - - $code .= "\n" . $self->_inline_check_lazy($inv); - - my $slot_access = $self->_inline_get($inv); - - # get - $code .= "\n" . 'if ( @_ == 1 ) {'; - - $code .= "\n" . $self->_inline_check_var_is_valid_key('$_[0]'); - - $code - .= "\n" - . 'return ' - . $self - ->Moose::Meta::Method::Accessor::Native::Hash::get::_return_value( - $slot_access) - . ';'; - - # set - $code .= "\n" . '} else {'; +sub _inline_check_argument_count { + my $self = shift; + $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_check_argument_count(@_); +} - $code .= "\n" . $self->_writer_core( $inv, $slot_access ); +sub _inline_check_arguments { + my $self = shift; + $self->Moose::Meta::Method::Accessor::Native::Hash::set::_inline_check_arguments(@_); +} - $code .= "\n" . $self->_inline_post_body(@_); +sub _return_value { + my $self = shift; + $self->Moose::Meta::Method::Accessor::Native::Hash::set::_return_value(@_); +} - $code .= "\n}"; - $code .= "\n}"; +sub _generate_method { + my $self = shift; - return $code; + my $inv = '$self'; + my $slot_access = $self->_get_value($inv); + + return ( + 'sub {', + 'my ' . $inv . ' = shift;', + $self->_inline_curried_arguments, + $self->_inline_check_lazy($inv, '$type_constraint', '$type_coercion', '$type_message'), + # get + 'if (@_ == 1) {', + $self->_inline_check_var_is_valid_key('$_[0]'), + $slot_access . '->{$_[0]}', + '}', + # set + 'else {', + $self->_inline_writer_core($inv, $slot_access), + '}', + '}', + ); } -# If we get one argument we won't check the argument count -sub _minimum_arguments {2} -sub _maximum_arguments {2} +sub _minimum_arguments { 1 } +sub _maximum_arguments { 2 } no Moose::Role;