X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FParams%2FValidate.pm;h=6997aca1bfe7d35f7cc841ff2146940b0dc2f016;hb=0a0bf9c2d3a08e5798015de93643dd9fd47f35d1;hp=f507d60781df05e2c88d15a40bd030a62b2b3ab4;hpb=c8c6d6c943e3cb6bafd0b9754cab302de23c5821;p=gitmo%2FMooseX-Params-Validate.git diff --git a/lib/MooseX/Params/Validate.pm b/lib/MooseX/Params/Validate.pm index f507d60..6997aca 100644 --- a/lib/MooseX/Params/Validate.pm +++ b/lib/MooseX/Params/Validate.pm @@ -5,10 +5,12 @@ use warnings; use Carp 'confess'; use Devel::Caller 'caller_cv'; -use Scalar::Util 'blessed', 'refaddr'; +use Scalar::Util 'blessed', 'refaddr', 'reftype'; -use Moose::Util::TypeConstraints qw( find_type_constraint class_type role_type ); -use Params::Validate (); +use Moose 0.58 (); +use Moose::Util::TypeConstraints + qw( find_type_constraint class_type role_type ); +use Params::Validate 0.88 (); use Sub::Exporter -setup => { exports => [ qw( validated_hash validated_list pos_validated_list validate validatep ) @@ -19,9 +21,6 @@ use Sub::Exporter -setup => { }, }; -our $VERSION = '0.14'; -our $AUTHORITY = 'cpan:STEVAN'; - my %CACHED_SPECS; sub validated_hash { @@ -51,7 +50,10 @@ sub validated_hash { my $instance; $instance = shift @$args if blessed $args->[0]; - my %args = @$args; + my %args + = @$args == 1 + && ref $args->[0] + && reftype( $args->[0] ) eq 'HASH' ? %{ $args->[0] } : @$args; $args{$_} = $spec{$_}{constraint}->coerce( $args{$_} ) for grep { $spec{$_}{coerce} && exists $args{$_} } keys %spec; @@ -101,7 +103,10 @@ sub validated_list { my $instance; $instance = shift @$args if blessed $args->[0]; - my %args = @$args; + my %args + = @$args == 1 + && ref $args->[0] + && reftype( $args->[0] ) eq 'HASH' ? %{ $args->[0] } : @$args; $args{$_} = $spec{$_}{constraint}->coerce( $args{$_} ) for grep { $spec{$_}{coerce} && exists $args{$_} } keys %spec; @@ -151,7 +156,7 @@ sub pos_validated_list { if $should_cache; } - my @args = @{$args}; + my @args = @$args; $args[$_] = $pv_spec[$_]{constraint}->coerce( $args[$_] ) for grep { $pv_spec[$_] && $pv_spec[$_]{coerce} } 0 .. $#args; @@ -297,6 +302,9 @@ is where if it spots an instance in the C<@_>, then it will handle it appropriately (unlike Params::Validate which forces you to shift you C<$self> first). +The values in C<@_> can either be a set of name-value pairs or a single hash +reference. + The C<%parameter_spec> accepts the following options: =over 4 @@ -350,6 +358,9 @@ We capture the order in which you defined the parameters and then return them as a list in the same order. If a param is marked optional and not included, then it will be set to C. +The values in C<@_> can either be a set of name-value pairs or a single hash +reference. + Like C, if it spots an object instance as the first parameter of C<@_>, it will handle it appropriately, returning it as the first argument. @@ -376,6 +387,10 @@ Unlike the other functions, this function I find C<$self> in the argument list. Make sure to shift it off yourself before doing validation. +The values in C<@_> must be a list of values. You cannot pass the values as an +array reference, because this cannot be distinguished from passing one value +which is itself an array reference. + If a parameter is marked as optional and is not present, it will simply not be returned. @@ -399,9 +414,9 @@ below, simply pass them after the list of parameter validation specs: =head1 ALLOWING EXTRA PARAMETERS By default, any parameters not mentioned in the parameter spec cause this -module to throw an error. However, you can have have this module simply ignore -them by setting C to a true value when calling -a validation subroutine. +module to throw an error. However, you can have this module simply ignore them +by setting C to a true value when calling a +validation subroutine. When calling C or C the extra parameters are simply returned in the hash or list as appropriate. However, when you call @@ -460,9 +475,7 @@ the cache key will bypass the normal cache key generation. =back -=head1 AUTHORS - -Stevan Little Estevan.little@iinteractive.comE +=head1 MAINTAINER Dave Rolsky Eautarch@urth.orgE