.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "Declare::Constraints::Simple::Library::Referencial 3pm" .TH Declare::Constraints::Simple::Library::Referencial 3pm "2018-03-31" "perl v5.26.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Declare::Constraints::Simple::Library::Referencial \- Ref Constraints .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& # 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(\*(Aqname\*(Aq) )); \& \& # an integer list \& my $int_list = IsArrayRef( IsInt ); \& \& # accept code references \& my $is_closure = IsCodeRef; \& \& # accept a regular expression \& my $is_regex = IsRegex; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This library contains those constraints that can test the validity of references and their types. .SH "CONSTRAINTS" .IX Header "CONSTRAINTS" .SS "IsRefType(@types)" .IX Subsection "IsRefType(@types)" Valid if the value is a reference of a kind in \f(CW@types\fR. .SS "IsScalarRef($constraint)" .IX Subsection "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. .PP .Vb 1 \& my $test_integer_ref = IsScalarRef(IsInt); .Ve .SS "IsArrayRef($constraint)" .IX Subsection "IsArrayRef($constraint)" The value is valid if the value is an array reference. The contents of the array can be validated by passing another \f(CW$constraint\fR as argument. .PP The stack or path part of \f(CW\*(C`IsArrayRef\*(C'\fR is \f(CW\*(C`IsArrayRef[$index]\*(C'\fR where \&\f(CW$index\fR is the index of the failing element. .ie n .SS "IsHashRef(\-keys => $constraint, \-values => $constraint)" .el .SS "IsHashRef(\-keys => \f(CW$constraint\fP, \-values => \f(CW$constraint\fP)" .IX Subsection "IsHashRef(-keys => $constraint, -values => $constraint)" True if the value is a hash reference. It can also take two named parameters: \f(CW\*(C`\-keys\*(C'\fR can pass a constraint to check the hashes keys, \&\f(CW\*(C`\-values\*(C'\fR does the same for its values. .PP The stack or path part of \f(CW\*(C`IsHashRef\*(C'\fR looks like \&\f(CW\*(C`IsHashRef[$type $key]\*(C'\fR where \f(CW$type\fR is either \f(CW\*(C`val\*(C'\fR or \f(CW\*(C`key\*(C'\fR depending on what was validated, and \f(CW$key\fR being the key that didn't pass validation. .SS "\fIIsCodeRef()\fP" .IX Subsection "IsCodeRef()" Code references have to be valid to pass this constraint. .SS "\fIIsRegex()\fP" .IX Subsection "IsRegex()" True if the value is a regular expression built with \f(CW\*(C`qr\*(C'\fR. \fBNote\fR however, that a simple string that could be used like \f(CW\*(C`/$rx/\*(C'\fR will not pass this constraint. You can combine multiple constraints with And(@constraints) though. .SH "SEE ALSO" .IX Header "SEE ALSO" Declare::Constraints::Simple, Declare::Constraints::Simple::Library .SH "AUTHOR" .IX Header "AUTHOR" Robert 'phaylon' Sedlacek \f(CW\*(C`\*(C'\fR .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" This module is free software, you can redistribute it and/or modify it under the same terms as perl itself.