Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Attribute::Params::Validate.3pm
1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  | will give a
29 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
32 .tr \(*W-|\(bv\*(Tr
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
55 .if \nF \{\
56 .    de IX
57 .    tm Index:\\$1\t\\n%\t"\\$2"
58 ..
59 .    nr % 0
60 .    rr F
61 .\}
62 .\"
63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
65 .hy 0
66 .if n .na
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "Attribute::Params::Validate 3"
132 .TH Attribute::Params::Validate 3 "2009-12-09" "perl v5.8.7" "User Contributed Perl Documentation"
133 .SH "NAME"
134 Attribute::Params::Validate \- Validate method/function parameters using attributes
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 .Vb 1
138 \&  use Attribute::Params::Validate qw(:all);
139 .Ve
140 .PP
141 .Vb 6
142 \&  # takes named params (hash or hashref)
143 \&  # foo is mandatory, bar is optional
144 \&  sub foo : Validate( foo => 1, bar => 0 )
145 \&  {
146 \&      ...
147 \&  }
148 .Ve
149 .PP
150 .Vb 6
151 \&  # takes positional params
152 \&  # first two are mandatory, third is optional
153 \&  sub bar : ValidatePos( 1, 1, 0 )
154 \&  {
155 \&      ...
156 \&  }
157 .Ve
158 .PP
159 .Vb 5
160 \&  # for some reason Perl insists that the entire attribute be on one line
161 \&  sub foo2 : Validate( foo => { type => ARRAYREF }, bar => { can => [ 'print', 'flush', 'frobnicate' ] }, baz => { type => SCALAR, callbacks => { 'numbers only' => sub { shift() =~ /^\ed+$/ }, 'less than 90' => sub { shift() < 90 } } } )
162 \&  {
163 \&      ...
164 \&  }
165 .Ve
166 .PP
167 .Vb 5
168 \&  # note that this is marked as a method.  This is very important!
169 \&  sub baz : Validate( foo => { type => ARRAYREF }, bar => { isa => 'Frobnicator' } ) method
170 \&  {
171 \&      ...
172 \&  }
173 .Ve
174 .SH "DESCRIPTION"
175 .IX Header "DESCRIPTION"
176 The Attribute::Params::Validate module allows you to validate method
177 or function call parameters just like Params::Validate does.  However,
178 this module allows you to specify your validation spec as an
179 attribute, rather than by calling the \f(CW\*(C`validate\*(C'\fR routine.
180 .PP
181 Please see Params::Validate for more information on how you can
182 specify what validation is performed.
183 .Sh "\s-1EXPORT\s0"
184 .IX Subsection "EXPORT"
185 This module exports everthing that Params::Validate does except for
186 the \f(CW\*(C`validate\*(C'\fR and \f(CW\*(C`validate_pos\*(C'\fR subroutines.
187 .Sh "\s-1ATTRIBUTES\s0"
188 .IX Subsection "ATTRIBUTES"
189 .IP "* Validate" 4
190 .IX Item "Validate"
191 This attribute corresponse to the \f(CW\*(C`validate\*(C'\fR subroutine in
192 Params::Validate.
193 .IP "* ValidatePos" 4
194 .IX Item "ValidatePos"
195 This attribute corresponse to the \f(CW\*(C`validate_pos\*(C'\fR subroutine in
196 Params::Validate.
197 .Sh "\s-1OO\s0"
198 .IX Subsection "OO"
199 If you are using this module to mark \fBmethods\fR for validation, as
200 opposed to subroutines, it is crucial that you mark these methods with
201 the \f(CW\*(C`:method\*(C'\fR attribute, as well as the \f(CW\*(C`Validate\*(C'\fR or \f(CW\*(C`ValidatePos\*(C'\fR
202 attribute.
203 .PP
204 If you do not do this, then the object or class used in the method
205 call will be passed to the validation routines, which is probably not
206 what you want.
207 .Sh "\s-1CAVEATS\s0"
208 .IX Subsection "CAVEATS"
209 You \fBmust\fR put all the arguments to the \f(CW\*(C`Validate\*(C'\fR or \f(CW\*(C`ValidatePos\*(C'\fR
210 attribute on a single line, or Perl will complain.
211 .SH "SEE ALSO"
212 .IX Header "SEE ALSO"
213 Params::Validate
214 .SH "AUTHOR"
215 .IX Header "AUTHOR"
216 Dave Rolsky, <autarch@urth.org>