X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FAttribute.pm;h=dec1300d931b1c739fd73de911ed1fc9bf729bcd;hb=815f725aeff0bd44da8d75e7cd4ac456e9e60238;hp=887afc3db111042e2d276eadabcf108d459efe01;hpb=3b46bd4991dea7ead4e7f52a089222d24554e2bd;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Attribute.pm b/lib/Mouse/Meta/Attribute.pm index 887afc3..dec1300 100644 --- a/lib/Mouse/Meta/Attribute.pm +++ b/lib/Mouse/Meta/Attribute.pm @@ -7,17 +7,16 @@ use Carp 'confess'; use Scalar::Util (); sub new { - my $class = shift; - my %args = @_; + my ($class, $name, %options) = @_; - my $name = $args{name}; + $options{name} = $name; - $args{init_arg} = $name - unless exists $args{init_arg}; + $options{init_arg} = $name + unless exists $options{init_arg}; - $args{is} ||= ''; + $options{is} ||= ''; - bless \%args, $class; + bless \%options, $class; } sub name { $_[0]->{name} } @@ -76,7 +75,7 @@ sub generate_accessor { my $accessor = "sub {\n"; if ($attribute->_is_metadata eq 'rw') { - $accessor .= 'if (scalar(@_) >= 2) {' . "\n"; + $accessor .= 'if (exists $_[1]) {' . "\n"; my $value = '$_[1]'; @@ -232,7 +231,7 @@ sub create { $args{find_type_constraint} = $code; } - my $attribute = $self->new(%args); + my $attribute = $self->new($name, %args); $attribute->_create_args(\%args); @@ -323,7 +322,7 @@ sub validate_args { return 1; } -sub verify_type_constraint { +sub verify_against_type_constraint { return 1 unless $_[0]->{type_constraint}; local $_ = $_[1]; @@ -470,7 +469,7 @@ Creates a new code reference for each of the attribute's handles methods. Returns a code reference which can be used to check that a given value passes this attribute's type constraint; -=head2 verify_type_constraint Item -> 1 | ERROR +=head2 verify_against_type_constraint Item -> 1 | ERROR Checks that the given value passes this attribute's type constraint. Returns 1 on success, otherwise Ces.