Provided by: libdeclare-constraints-simple-perl_0.03-1_all
Declare::Constraints::Simple::Library::Referencial - Ref Constraints
# scalar or array references my $scalar_or_array = IsRefType( qw(SCALAR ARRAY) ); # scalar reference my $int_ref = IsScalarRef( IsInt ); # accept mappings of ids to objects with "name" methods my $id_obj_map = IsHashRef( -keys => IsInt, -values => And( IsObject, HasMethods('name') )); # an integer list my $int_list = IsArrayRef( IsInt ); # accept code references my $is_closure = IsCodeRef; # accept a regular expression my $is_regex = IsRegex;
This library contains those constraints that can test the validity of references and their types.
IsRefType(@types) Valid if the value is a reference of a kind in @types. IsScalarRef($constraint) This is true if the value is a scalar reference. A possible constraint for the scalar references target value can be passed. E.g. my $test_integer_ref = IsScalarRef(IsInt); IsArrayRef($constraint) The value is valid if the value is an array reference. The contents of the array can be validated by passing another $constraint as argument. The stack or path part of "IsArrayRef" is "IsArrayRef[$index]" where $index is the index of the failing element. IsHashRef(-keys => $constraint, -values => $constraint) True if the value is a hash reference. It can also take two named parameters: "-keys" can pass a constraint to check the hashes keys, "-values" does the same for its values. The stack or path part of "IsHashRef" looks like "IsHashRef[$type $key]" where $type is either "val" or "key" depending on what was validated, and $key being the key that didn't pass validation. IsCodeRef() Code references have to be valid to pass this constraint. IsRegex() True if the value is a regular expression built with "qr". Note however, that a simple string that could be used like "/$rx/" will not pass this constraint. You can combine multiple constraints with And(@constraints) though.
Robert 'phaylon' Sedlacek "<email@example.com>"
LICENSE AND COPYRIGHT
This module is free software, you can redistribute it and/or modify it under the same terms as perl itself. perl v5.26.2 Declare::Constraints::Simple::Library::Referencial(3pm)