File Coverage

blib/lib/Acme/Mitey/Cards/Types.pm
Criterion Covered Total %
statement 209 656 31.8
branch 0 462 0.0
condition 15 387 3.8
subroutine 78 295 26.4
pod 0 210 0.0
total 302 2010 15.0


line stmt bran cond sub pod time code
1 9     9   138 use 5.008001;
  9         27  
2 9     9   38 use strict;
  9         17  
  9         188  
3 9     9   38 use warnings;
  9         13  
  9         254  
4              
5             package Acme::Mitey::Cards::Types;
6              
7 9     9   57 use Exporter ();
  9         22  
  9         171  
8 9     9   53 use Carp qw( croak );
  9         21  
  9         1885  
9              
10             our $TLC_VERSION = "0.006";
11             our @ISA = qw( Exporter );
12             our @EXPORT;
13             our @EXPORT_OK;
14             our %EXPORT_TAGS = (
15             is => [],
16             types => [],
17             assert => [],
18             );
19              
20 0         0 BEGIN {
21             package Acme::Mitey::Cards::Types::TypeConstraint;
22 9     9   11072 our $LIBRARY = "Acme::Mitey::Cards::Types";
23              
24             use overload (
25             fallback => !!1,
26             '|' => 'union',
27 85     85   454 bool => sub { !! 1 },
28 0     0   0 '""' => sub { shift->[1] },
29             '&{}' => sub {
30 0     0   0 my $self = shift;
31 0     0   0 return sub { $self->assert_return( @_ ) };
  0         0  
32             },
33 9     9   2008 );
  9         1623  
  9         90  
34              
35             sub union {
36 3     3   15 my @types = grep ref( $_ ), @_;
37 3         14 my @codes = map $_->[0], @types;
38             bless [
39 0 0   0   0 sub { for ( @codes ) { return 1 if $_->(@_) } return 0 },
  0         0  
  0         0  
40 3         31 join( '|', map $_->[1], @types ),
41             \@types,
42             ], __PACKAGE__;
43             }
44              
45             sub check {
46 0     0   0 $_[0][0]->( $_[1] );
47             }
48              
49             sub get_message {
50 0 0   0   0 sprintf '%s did not pass type constraint "%s"',
51             defined( $_[1] ) ? $_[1] : 'Undef',
52             $_[0][1];
53             }
54              
55             sub validate {
56 0 0   0   0 $_[0][0]->( $_[1] )
57             ? undef
58             : $_[0]->get_message( $_[1] );
59             }
60              
61             sub assert_valid {
62 0 0   0   0 $_[0][0]->( $_[1] )
63             ? 1
64             : Carp::croak( $_[0]->get_message( $_[1] ) );
65             }
66              
67             sub assert_return {
68 0 0   0   0 $_[0][0]->( $_[1] )
69             ? $_[1]
70             : Carp::croak( $_[0]->get_message( $_[1] ) );
71             }
72              
73             sub to_TypeTiny {
74 0     0   0 my ( $coderef, $name, $library, $origname ) = @{ +shift };
  0         0  
75 0 0       0 if ( ref $library eq 'ARRAY' ) {
76 0         0 require Type::Tiny::Union;
77 0         0 return 'Type::Tiny::Union'->new(
78             display_name => $name,
79             type_constraints => [ map $_->to_TypeTiny, @$library ],
80             );
81             }
82 0 0       0 if ( $library ) {
83 0         0 local $@;
84 0 0       0 eval "require $library; 1" or die $@;
85 0         0 my $type = $library->get_type( $origname );
86 0 0       0 return $type if $type;
87             }
88 0         0 require Type::Tiny;
89             return 'Type::Tiny'->new(
90             name => $name,
91 0     0   0 constraint => sub { $coderef->( $_ ) },
92 0     0   0 inlined => sub { sprintf '%s::is_%s(%s)', $LIBRARY, $name, pop }
93 0         0 );
94             }
95              
96             sub DOES {
97 0 0   0   0 return 1 if $_[1] eq 'Type::API::Constraint';
98 0 0       0 return 1 if $_[1] eq 'Type::Library::Compiler::TypeConstraint';
99 0         0 shift->DOES( @_ );
100             }
101             };
102              
103             # Any
104             {
105             my $type;
106             sub Any () {
107 0   0 0 0 0 $type ||= bless( [ \&is_Any, "Any", "Types::Standard", "Any" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
108             }
109              
110             sub is_Any ($) {
111 0     0 0 0 (!!1)
112             }
113              
114             sub assert_Any ($) {
115 0     0 0 0 (!!1) ? $_[0] : Any->get_message( $_[0] );
116             }
117              
118             $EXPORT_TAGS{"Any"} = [ qw( Any is_Any assert_Any ) ];
119             push @EXPORT_OK, @{ $EXPORT_TAGS{"Any"} };
120             push @{ $EXPORT_TAGS{"types"} }, "Any";
121             push @{ $EXPORT_TAGS{"is"} }, "is_Any";
122             push @{ $EXPORT_TAGS{"assert"} }, "assert_Any";
123              
124             }
125              
126             # ArrayRef
127             {
128             my $type;
129             sub ArrayRef () {
130 0   0 0 0 0 $type ||= bless( [ \&is_ArrayRef, "ArrayRef", "Types::Standard", "ArrayRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
131             }
132              
133             sub is_ArrayRef ($) {
134 0     0 0 0 (ref($_[0]) eq 'ARRAY')
135             }
136              
137             sub assert_ArrayRef ($) {
138 0 0   0 0 0 (ref($_[0]) eq 'ARRAY') ? $_[0] : ArrayRef->get_message( $_[0] );
139             }
140              
141             $EXPORT_TAGS{"ArrayRef"} = [ qw( ArrayRef is_ArrayRef assert_ArrayRef ) ];
142             push @EXPORT_OK, @{ $EXPORT_TAGS{"ArrayRef"} };
143             push @{ $EXPORT_TAGS{"types"} }, "ArrayRef";
144             push @{ $EXPORT_TAGS{"is"} }, "is_ArrayRef";
145             push @{ $EXPORT_TAGS{"assert"} }, "assert_ArrayRef";
146              
147             }
148              
149             # Bool
150             {
151             my $type;
152             sub Bool () {
153 0   0 0 0 0 $type ||= bless( [ \&is_Bool, "Bool", "Types::Standard", "Bool" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
154             }
155              
156             sub is_Bool ($) {
157 0 0 0 0 0 0 (!ref $_[0] and (!defined $_[0] or $_[0] eq q() or $_[0] eq '0' or $_[0] eq '1'))
      0        
      0        
158             }
159              
160             sub assert_Bool ($) {
161 0 0 0 0 0 0 (!ref $_[0] and (!defined $_[0] or $_[0] eq q() or $_[0] eq '0' or $_[0] eq '1')) ? $_[0] : Bool->get_message( $_[0] );
162             }
163              
164             $EXPORT_TAGS{"Bool"} = [ qw( Bool is_Bool assert_Bool ) ];
165             push @EXPORT_OK, @{ $EXPORT_TAGS{"Bool"} };
166             push @{ $EXPORT_TAGS{"types"} }, "Bool";
167             push @{ $EXPORT_TAGS{"is"} }, "is_Bool";
168             push @{ $EXPORT_TAGS{"assert"} }, "assert_Bool";
169              
170             }
171              
172             # Card
173             {
174             my $type;
175             sub Card () {
176 0   0 0 0 0 $type ||= bless( [ \&is_Card, "Card", "Acme::Mitey::Cards::Types::Source", "Card" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
177             }
178              
179             sub is_Card ($) {
180 9 0   9 0 68 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card]) })
  9     0   47  
  9         599  
  0         0  
  0         0  
181             }
182              
183             sub assert_Card ($) {
184 9 0   9 0 51 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card]) }) ? $_[0] : Card->get_message( $_[0] );
  9 0   0   18  
  9         1707  
  0         0  
  0         0  
185             }
186              
187             $EXPORT_TAGS{"Card"} = [ qw( Card is_Card assert_Card ) ];
188             push @EXPORT_OK, @{ $EXPORT_TAGS{"Card"} };
189             push @{ $EXPORT_TAGS{"types"} }, "Card";
190             push @{ $EXPORT_TAGS{"is"} }, "is_Card";
191             push @{ $EXPORT_TAGS{"assert"} }, "assert_Card";
192              
193             }
194              
195             # CardArray
196             {
197             my $type;
198             sub CardArray () {
199 6   100 6 0 117 $type ||= bless( [ \&is_CardArray, "CardArray", "Acme::Mitey::Cards::Types::Source", "CardArray" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
200             }
201              
202             sub is_CardArray ($) {
203 9 0   9 0 58 do { (ref($_[0]) eq 'ARRAY') and do { my $ok = 1; for my $i (@{$_[0]}) { ($ok = 0, last) unless (do { use Scalar::Util (); Scalar::Util::blessed($i) and $i->isa(q[Acme::Mitey::Cards::Card]) }) }; $ok } }
  9 0   0   92  
  9 0       904  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
204             }
205              
206             sub assert_CardArray ($) {
207 9 0   9 0 72 do { (ref($_[0]) eq 'ARRAY') and do { my $ok = 1; for my $i (@{$_[0]}) { ($ok = 0, last) unless (do { use Scalar::Util (); Scalar::Util::blessed($i) and $i->isa(q[Acme::Mitey::Cards::Card]) }) }; $ok } } ? $_[0] : CardArray->get_message( $_[0] );
  9 0   0   20  
  9 0       6182  
  0 0       0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
208             }
209              
210             $EXPORT_TAGS{"CardArray"} = [ qw( CardArray is_CardArray assert_CardArray ) ];
211             push @EXPORT_OK, @{ $EXPORT_TAGS{"CardArray"} };
212             push @{ $EXPORT_TAGS{"types"} }, "CardArray";
213             push @{ $EXPORT_TAGS{"is"} }, "is_CardArray";
214             push @{ $EXPORT_TAGS{"assert"} }, "assert_CardArray";
215              
216             }
217              
218             # CardNumber
219             {
220             my $type;
221             sub CardNumber () {
222 3   50 3 0 15 $type ||= bless( [ \&is_CardNumber, "CardNumber", "Acme::Mitey::Cards::Types::Source", "CardNumber" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
223             }
224              
225             sub is_CardNumber ($) {
226 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= 1) && ($_[0] <= 10))
  0 0 0     0  
  0         0  
  0         0  
227             }
228              
229             sub assert_CardNumber ($) {
230 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= 1) && ($_[0] <= 10)) ? $_[0] : CardNumber->get_message( $_[0] );
231             }
232              
233             $EXPORT_TAGS{"CardNumber"} = [ qw( CardNumber is_CardNumber assert_CardNumber ) ];
234             push @EXPORT_OK, @{ $EXPORT_TAGS{"CardNumber"} };
235             push @{ $EXPORT_TAGS{"types"} }, "CardNumber";
236             push @{ $EXPORT_TAGS{"is"} }, "is_CardNumber";
237             push @{ $EXPORT_TAGS{"assert"} }, "assert_CardNumber";
238              
239             }
240              
241             # Character
242             {
243             my $type;
244             sub Character () {
245 3   50 3 0 22 $type ||= bless( [ \&is_Character, "Character", "Acme::Mitey::Cards::Types::Source", "Character" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
246             }
247              
248             sub is_Character ($) {
249 0 0 0 0 0 0 do { (defined($_[0]) and !ref($_[0]) and $_[0] =~ m{\A(?:(?:Jack|King|Queen))\z}) }
  0         0  
250             }
251              
252             sub assert_Character ($) {
253 0 0 0 0 0 0 do { (defined($_[0]) and !ref($_[0]) and $_[0] =~ m{\A(?:(?:Jack|King|Queen))\z}) } ? $_[0] : Character->get_message( $_[0] );
  0 0       0  
254             }
255              
256             $EXPORT_TAGS{"Character"} = [ qw( Character is_Character assert_Character ) ];
257             push @EXPORT_OK, @{ $EXPORT_TAGS{"Character"} };
258             push @{ $EXPORT_TAGS{"types"} }, "Character";
259             push @{ $EXPORT_TAGS{"is"} }, "is_Character";
260             push @{ $EXPORT_TAGS{"assert"} }, "assert_Character";
261              
262             }
263              
264             # ClassName
265             {
266             my $type;
267             sub ClassName () {
268 0   0 0 0 0 $type ||= bless( [ \&is_ClassName, "ClassName", "Types::Standard", "ClassName" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
269             }
270              
271             sub is_ClassName ($) {
272 0     0 0 0 do { (sub {
273 9     9   61 no strict 'refs';
  9         13  
  9         2079  
274 0 0   0   0 return !!0 if ref $_[0];
275 0 0       0 return !!0 if not $_[0];
276 0 0       0 return !!0 if ref(do { my $tmpstr = $_[0]; \$tmpstr }) ne 'SCALAR';
  0         0  
  0         0  
277 0         0 my $stash = \%{"$_[0]\::"};
  0         0  
278 0 0 0     0 return !!1 if exists($stash->{'ISA'}) && *{$stash->{'ISA'}}{ARRAY} && @{$_[0].'::ISA'};
  0   0     0  
  0         0  
279 0 0       0 return !!1 if exists($stash->{'VERSION'});
280 0         0 foreach my $globref (values %$stash) {
281             return !!1
282             if ref \$globref eq 'GLOB'
283 0         0 ? *{$globref}{CODE}
284 0 0       0 : ref $globref; # const or sub ref
    0          
285             }
286 0         0 return !!0;
287 0         0 })->(do { my $tmp = $_[0] }) }
  0         0  
288             }
289              
290             sub assert_ClassName ($) {
291 0 0   0 0 0 do { (sub {
292 9     9   56 no strict 'refs';
  9         14  
  9         4399  
293 0 0   0   0 return !!0 if ref $_[0];
294 0 0       0 return !!0 if not $_[0];
295 0 0       0 return !!0 if ref(do { my $tmpstr = $_[0]; \$tmpstr }) ne 'SCALAR';
  0         0  
  0         0  
296 0         0 my $stash = \%{"$_[0]\::"};
  0         0  
297 0 0 0     0 return !!1 if exists($stash->{'ISA'}) && *{$stash->{'ISA'}}{ARRAY} && @{$_[0].'::ISA'};
  0   0     0  
  0         0  
298 0 0       0 return !!1 if exists($stash->{'VERSION'});
299 0         0 foreach my $globref (values %$stash) {
300             return !!1
301             if ref \$globref eq 'GLOB'
302 0         0 ? *{$globref}{CODE}
303 0 0       0 : ref $globref; # const or sub ref
    0          
304             }
305 0         0 return !!0;
306 0         0 })->(do { my $tmp = $_[0] }) } ? $_[0] : ClassName->get_message( $_[0] );
  0         0  
307             }
308              
309             $EXPORT_TAGS{"ClassName"} = [ qw( ClassName is_ClassName assert_ClassName ) ];
310             push @EXPORT_OK, @{ $EXPORT_TAGS{"ClassName"} };
311             push @{ $EXPORT_TAGS{"types"} }, "ClassName";
312             push @{ $EXPORT_TAGS{"is"} }, "is_ClassName";
313             push @{ $EXPORT_TAGS{"assert"} }, "assert_ClassName";
314              
315             }
316              
317             # CodeRef
318             {
319             my $type;
320             sub CodeRef () {
321 0   0 0 0 0 $type ||= bless( [ \&is_CodeRef, "CodeRef", "Types::Standard", "CodeRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
322             }
323              
324             sub is_CodeRef ($) {
325 0     0 0 0 (ref($_[0]) eq 'CODE')
326             }
327              
328             sub assert_CodeRef ($) {
329 0 0   0 0 0 (ref($_[0]) eq 'CODE') ? $_[0] : CodeRef->get_message( $_[0] );
330             }
331              
332             $EXPORT_TAGS{"CodeRef"} = [ qw( CodeRef is_CodeRef assert_CodeRef ) ];
333             push @EXPORT_OK, @{ $EXPORT_TAGS{"CodeRef"} };
334             push @{ $EXPORT_TAGS{"types"} }, "CodeRef";
335             push @{ $EXPORT_TAGS{"is"} }, "is_CodeRef";
336             push @{ $EXPORT_TAGS{"assert"} }, "assert_CodeRef";
337              
338             }
339              
340             # ConsumerOf
341             {
342             my $type;
343             sub ConsumerOf () {
344 0   0 0 0 0 $type ||= bless( [ \&is_ConsumerOf, "ConsumerOf", "Types::Standard", "ConsumerOf" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
345             }
346              
347             sub is_ConsumerOf ($) {
348 9     9 0 64 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) })
  9     0   23  
  9         479  
  0         0  
  0         0  
349             }
350              
351             sub assert_ConsumerOf ($) {
352 9 0   9 0 61 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) }) ? $_[0] : ConsumerOf->get_message( $_[0] );
  9     0   28  
  9         3028  
  0         0  
  0         0  
353             }
354              
355             $EXPORT_TAGS{"ConsumerOf"} = [ qw( ConsumerOf is_ConsumerOf assert_ConsumerOf ) ];
356             push @EXPORT_OK, @{ $EXPORT_TAGS{"ConsumerOf"} };
357             push @{ $EXPORT_TAGS{"types"} }, "ConsumerOf";
358             push @{ $EXPORT_TAGS{"is"} }, "is_ConsumerOf";
359             push @{ $EXPORT_TAGS{"assert"} }, "assert_ConsumerOf";
360              
361             }
362              
363             # CycleTuple
364             {
365             my $type;
366             sub CycleTuple () {
367 0   0 0 0 0 $type ||= bless( [ \&is_CycleTuple, "CycleTuple", "Types::Standard", "CycleTuple" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
368             }
369              
370             sub is_CycleTuple ($) {
371 0     0 0 0 (ref($_[0]) eq 'ARRAY')
372             }
373              
374             sub assert_CycleTuple ($) {
375 0 0   0 0 0 (ref($_[0]) eq 'ARRAY') ? $_[0] : CycleTuple->get_message( $_[0] );
376             }
377              
378             $EXPORT_TAGS{"CycleTuple"} = [ qw( CycleTuple is_CycleTuple assert_CycleTuple ) ];
379             push @EXPORT_OK, @{ $EXPORT_TAGS{"CycleTuple"} };
380             push @{ $EXPORT_TAGS{"types"} }, "CycleTuple";
381             push @{ $EXPORT_TAGS{"is"} }, "is_CycleTuple";
382             push @{ $EXPORT_TAGS{"assert"} }, "assert_CycleTuple";
383              
384             }
385              
386             # Deck
387             {
388             my $type;
389             sub Deck () {
390 8   50 8 0 229 $type ||= bless( [ \&is_Deck, "Deck", "Acme::Mitey::Cards::Types::Source", "Deck" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
391             }
392              
393             sub is_Deck ($) {
394 9 0   9 0 56 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Deck]) })
  9     0   16  
  9         543  
  0         0  
  0         0  
395             }
396              
397             sub assert_Deck ($) {
398 9 0   9 0 56 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Deck]) }) ? $_[0] : Deck->get_message( $_[0] );
  9 0   0   23  
  9         6037  
  0         0  
  0         0  
399             }
400              
401             $EXPORT_TAGS{"Deck"} = [ qw( Deck is_Deck assert_Deck ) ];
402             push @EXPORT_OK, @{ $EXPORT_TAGS{"Deck"} };
403             push @{ $EXPORT_TAGS{"types"} }, "Deck";
404             push @{ $EXPORT_TAGS{"is"} }, "is_Deck";
405             push @{ $EXPORT_TAGS{"assert"} }, "assert_Deck";
406              
407             }
408              
409             # Defined
410             {
411             my $type;
412             sub Defined () {
413 0   0 0 0 0 $type ||= bless( [ \&is_Defined, "Defined", "Types::Standard", "Defined" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
414             }
415              
416             sub is_Defined ($) {
417 0     0 0 0 (defined($_[0]))
418             }
419              
420             sub assert_Defined ($) {
421 0 0   0 0 0 (defined($_[0])) ? $_[0] : Defined->get_message( $_[0] );
422             }
423              
424             $EXPORT_TAGS{"Defined"} = [ qw( Defined is_Defined assert_Defined ) ];
425             push @EXPORT_OK, @{ $EXPORT_TAGS{"Defined"} };
426             push @{ $EXPORT_TAGS{"types"} }, "Defined";
427             push @{ $EXPORT_TAGS{"is"} }, "is_Defined";
428             push @{ $EXPORT_TAGS{"assert"} }, "assert_Defined";
429              
430             }
431              
432             # Dict
433             {
434             my $type;
435             sub Dict () {
436 0   0 0 0 0 $type ||= bless( [ \&is_Dict, "Dict", "Types::Standard", "Dict" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
437             }
438              
439             sub is_Dict ($) {
440 0     0 0 0 (ref($_[0]) eq 'HASH')
441             }
442              
443             sub assert_Dict ($) {
444 0 0   0 0 0 (ref($_[0]) eq 'HASH') ? $_[0] : Dict->get_message( $_[0] );
445             }
446              
447             $EXPORT_TAGS{"Dict"} = [ qw( Dict is_Dict assert_Dict ) ];
448             push @EXPORT_OK, @{ $EXPORT_TAGS{"Dict"} };
449             push @{ $EXPORT_TAGS{"types"} }, "Dict";
450             push @{ $EXPORT_TAGS{"is"} }, "is_Dict";
451             push @{ $EXPORT_TAGS{"assert"} }, "assert_Dict";
452              
453             }
454              
455             # Enum
456             {
457             my $type;
458             sub Enum () {
459 0   0 0 0 0 $type ||= bless( [ \&is_Enum, "Enum", "Types::Standard", "Enum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
460             }
461              
462             sub is_Enum ($) {
463 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }
  0 0       0  
  0         0  
464             }
465              
466             sub assert_Enum ($) {
467 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } } ? $_[0] : Enum->get_message( $_[0] );
  0 0       0  
  0 0       0  
468             }
469              
470             $EXPORT_TAGS{"Enum"} = [ qw( Enum is_Enum assert_Enum ) ];
471             push @EXPORT_OK, @{ $EXPORT_TAGS{"Enum"} };
472             push @{ $EXPORT_TAGS{"types"} }, "Enum";
473             push @{ $EXPORT_TAGS{"is"} }, "is_Enum";
474             push @{ $EXPORT_TAGS{"assert"} }, "assert_Enum";
475              
476             }
477              
478             # FaceCard
479             {
480             my $type;
481             sub FaceCard () {
482 0   0 0 0 0 $type ||= bless( [ \&is_FaceCard, "FaceCard", "Acme::Mitey::Cards::Types::Source", "FaceCard" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
483             }
484              
485             sub is_FaceCard ($) {
486 9 0   9 0 62 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Face]) })
  9     0   19  
  9         538  
  0         0  
  0         0  
487             }
488              
489             sub assert_FaceCard ($) {
490 9 0   9 0 46 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Face]) }) ? $_[0] : FaceCard->get_message( $_[0] );
  9 0   0   15  
  9         1432  
  0         0  
  0         0  
491             }
492              
493             $EXPORT_TAGS{"FaceCard"} = [ qw( FaceCard is_FaceCard assert_FaceCard ) ];
494             push @EXPORT_OK, @{ $EXPORT_TAGS{"FaceCard"} };
495             push @{ $EXPORT_TAGS{"types"} }, "FaceCard";
496             push @{ $EXPORT_TAGS{"is"} }, "is_FaceCard";
497             push @{ $EXPORT_TAGS{"assert"} }, "assert_FaceCard";
498              
499             }
500              
501             # FileHandle
502             {
503             my $type;
504             sub FileHandle () {
505 0   0 0 0 0 $type ||= bless( [ \&is_FileHandle, "FileHandle", "Types::Standard", "FileHandle" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
506             }
507              
508             sub is_FileHandle ($) {
509 9 0 0 9 0 54 (do { use Scalar::Util (); (ref($_[0]) && Scalar::Util::openhandle($_[0])) or (Scalar::Util::blessed($_[0]) && $_[0]->isa("IO::Handle")) })
  9   0 0   58  
  9         731  
  0         0  
  0         0  
510             }
511              
512             sub assert_FileHandle ($) {
513 9 0 0 9 0 58 (do { use Scalar::Util (); (ref($_[0]) && Scalar::Util::openhandle($_[0])) or (Scalar::Util::blessed($_[0]) && $_[0]->isa("IO::Handle")) }) ? $_[0] : FileHandle->get_message( $_[0] );
  9 0 0 0   13  
  9         3252  
  0         0  
  0         0  
514             }
515              
516             $EXPORT_TAGS{"FileHandle"} = [ qw( FileHandle is_FileHandle assert_FileHandle ) ];
517             push @EXPORT_OK, @{ $EXPORT_TAGS{"FileHandle"} };
518             push @{ $EXPORT_TAGS{"types"} }, "FileHandle";
519             push @{ $EXPORT_TAGS{"is"} }, "is_FileHandle";
520             push @{ $EXPORT_TAGS{"assert"} }, "assert_FileHandle";
521              
522             }
523              
524             # GlobRef
525             {
526             my $type;
527             sub GlobRef () {
528 0   0 0 0 0 $type ||= bless( [ \&is_GlobRef, "GlobRef", "Types::Standard", "GlobRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
529             }
530              
531             sub is_GlobRef ($) {
532 0     0 0 0 (ref($_[0]) eq 'GLOB')
533             }
534              
535             sub assert_GlobRef ($) {
536 0 0   0 0 0 (ref($_[0]) eq 'GLOB') ? $_[0] : GlobRef->get_message( $_[0] );
537             }
538              
539             $EXPORT_TAGS{"GlobRef"} = [ qw( GlobRef is_GlobRef assert_GlobRef ) ];
540             push @EXPORT_OK, @{ $EXPORT_TAGS{"GlobRef"} };
541             push @{ $EXPORT_TAGS{"types"} }, "GlobRef";
542             push @{ $EXPORT_TAGS{"is"} }, "is_GlobRef";
543             push @{ $EXPORT_TAGS{"assert"} }, "assert_GlobRef";
544              
545             }
546              
547             # Hand
548             {
549             my $type;
550             sub Hand () {
551 0   0 0 0 0 $type ||= bless( [ \&is_Hand, "Hand", "Acme::Mitey::Cards::Types::Source", "Hand" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
552             }
553              
554             sub is_Hand ($) {
555 9 0   9 0 55 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Hand]) })
  9     0   50  
  9         536  
  0         0  
  0         0  
556             }
557              
558             sub assert_Hand ($) {
559 9 0   9 0 76 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Hand]) }) ? $_[0] : Hand->get_message( $_[0] );
  9 0   0   15  
  9         1678  
  0         0  
  0         0  
560             }
561              
562             $EXPORT_TAGS{"Hand"} = [ qw( Hand is_Hand assert_Hand ) ];
563             push @EXPORT_OK, @{ $EXPORT_TAGS{"Hand"} };
564             push @{ $EXPORT_TAGS{"types"} }, "Hand";
565             push @{ $EXPORT_TAGS{"is"} }, "is_Hand";
566             push @{ $EXPORT_TAGS{"assert"} }, "assert_Hand";
567              
568             }
569              
570             # HasMethods
571             {
572             my $type;
573             sub HasMethods () {
574 0   0 0 0 0 $type ||= bless( [ \&is_HasMethods, "HasMethods", "Types::Standard", "HasMethods" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
575             }
576              
577             sub is_HasMethods ($) {
578 9     9 0 72 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) })
  9     0   15  
  9         397  
  0         0  
  0         0  
579             }
580              
581             sub assert_HasMethods ($) {
582 9 0   9 0 56 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) }) ? $_[0] : HasMethods->get_message( $_[0] );
  9     0   16  
  9         3004  
  0         0  
  0         0  
583             }
584              
585             $EXPORT_TAGS{"HasMethods"} = [ qw( HasMethods is_HasMethods assert_HasMethods ) ];
586             push @EXPORT_OK, @{ $EXPORT_TAGS{"HasMethods"} };
587             push @{ $EXPORT_TAGS{"types"} }, "HasMethods";
588             push @{ $EXPORT_TAGS{"is"} }, "is_HasMethods";
589             push @{ $EXPORT_TAGS{"assert"} }, "assert_HasMethods";
590              
591             }
592              
593             # HashRef
594             {
595             my $type;
596             sub HashRef () {
597 2   50 2 0 13 $type ||= bless( [ \&is_HashRef, "HashRef", "Types::Standard", "HashRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
598             }
599              
600             sub is_HashRef ($) {
601 0     0 0 0 (ref($_[0]) eq 'HASH')
602             }
603              
604             sub assert_HashRef ($) {
605 0 0   0 0 0 (ref($_[0]) eq 'HASH') ? $_[0] : HashRef->get_message( $_[0] );
606             }
607              
608             $EXPORT_TAGS{"HashRef"} = [ qw( HashRef is_HashRef assert_HashRef ) ];
609             push @EXPORT_OK, @{ $EXPORT_TAGS{"HashRef"} };
610             push @{ $EXPORT_TAGS{"types"} }, "HashRef";
611             push @{ $EXPORT_TAGS{"is"} }, "is_HashRef";
612             push @{ $EXPORT_TAGS{"assert"} }, "assert_HashRef";
613              
614             }
615              
616             # InstanceOf
617             {
618             my $type;
619             sub InstanceOf () {
620 0   0 0 0 0 $type ||= bless( [ \&is_InstanceOf, "InstanceOf", "Types::Standard", "InstanceOf" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
621             }
622              
623             sub is_InstanceOf ($) {
624 9     9 0 52 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) })
  9     0   14  
  9         460  
  0         0  
  0         0  
625             }
626              
627             sub assert_InstanceOf ($) {
628 9 0   9 0 50 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) }) ? $_[0] : InstanceOf->get_message( $_[0] );
  9     0   12  
  9         6954  
  0         0  
  0         0  
629             }
630              
631             $EXPORT_TAGS{"InstanceOf"} = [ qw( InstanceOf is_InstanceOf assert_InstanceOf ) ];
632             push @EXPORT_OK, @{ $EXPORT_TAGS{"InstanceOf"} };
633             push @{ $EXPORT_TAGS{"types"} }, "InstanceOf";
634             push @{ $EXPORT_TAGS{"is"} }, "is_InstanceOf";
635             push @{ $EXPORT_TAGS{"assert"} }, "assert_InstanceOf";
636              
637             }
638              
639             # Int
640             {
641             my $type;
642             sub Int () {
643 6   100 6 0 39 $type ||= bless( [ \&is_Int, "Int", "Types::Standard", "Int" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
644             }
645              
646             sub is_Int ($) {
647 0 0 0 0 0 0 (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ })
  0         0  
  0         0  
648             }
649              
650             sub assert_Int ($) {
651 0 0 0 0 0 0 (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) ? $_[0] : Int->get_message( $_[0] );
  0 0       0  
  0         0  
652             }
653              
654             $EXPORT_TAGS{"Int"} = [ qw( Int is_Int assert_Int ) ];
655             push @EXPORT_OK, @{ $EXPORT_TAGS{"Int"} };
656             push @{ $EXPORT_TAGS{"types"} }, "Int";
657             push @{ $EXPORT_TAGS{"is"} }, "is_Int";
658             push @{ $EXPORT_TAGS{"assert"} }, "assert_Int";
659              
660             }
661              
662             # IntRange
663             {
664             my $type;
665             sub IntRange () {
666 0   0 0 0 0 $type ||= bless( [ \&is_IntRange, "IntRange", "Types::Common::Numeric", "IntRange" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
667             }
668              
669             sub is_IntRange ($) {
670 0 0 0 0 0 0 (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ })
  0         0  
  0         0  
671             }
672              
673             sub assert_IntRange ($) {
674 0 0 0 0 0 0 (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) ? $_[0] : IntRange->get_message( $_[0] );
  0 0       0  
  0         0  
675             }
676              
677             $EXPORT_TAGS{"IntRange"} = [ qw( IntRange is_IntRange assert_IntRange ) ];
678             push @EXPORT_OK, @{ $EXPORT_TAGS{"IntRange"} };
679             push @{ $EXPORT_TAGS{"types"} }, "IntRange";
680             push @{ $EXPORT_TAGS{"is"} }, "is_IntRange";
681             push @{ $EXPORT_TAGS{"assert"} }, "assert_IntRange";
682              
683             }
684              
685             # Item
686             {
687             my $type;
688             sub Item () {
689 0   0 0 0 0 $type ||= bless( [ \&is_Item, "Item", "Types::Standard", "Item" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
690             }
691              
692             sub is_Item ($) {
693 0     0 0 0 (!!1)
694             }
695              
696             sub assert_Item ($) {
697 0     0 0 0 (!!1) ? $_[0] : Item->get_message( $_[0] );
698             }
699              
700             $EXPORT_TAGS{"Item"} = [ qw( Item is_Item assert_Item ) ];
701             push @EXPORT_OK, @{ $EXPORT_TAGS{"Item"} };
702             push @{ $EXPORT_TAGS{"types"} }, "Item";
703             push @{ $EXPORT_TAGS{"is"} }, "is_Item";
704             push @{ $EXPORT_TAGS{"assert"} }, "assert_Item";
705              
706             }
707              
708             # JokerCard
709             {
710             my $type;
711             sub JokerCard () {
712 0   0 0 0 0 $type ||= bless( [ \&is_JokerCard, "JokerCard", "Acme::Mitey::Cards::Types::Source", "JokerCard" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
713             }
714              
715             sub is_JokerCard ($) {
716 9 0   9 0 56 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Joker]) })
  9     0   14  
  9         561  
  0         0  
  0         0  
717             }
718              
719             sub assert_JokerCard ($) {
720 9 0   9 0 48 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Joker]) }) ? $_[0] : JokerCard->get_message( $_[0] );
  9 0   0   15  
  9         1607  
  0         0  
  0         0  
721             }
722              
723             $EXPORT_TAGS{"JokerCard"} = [ qw( JokerCard is_JokerCard assert_JokerCard ) ];
724             push @EXPORT_OK, @{ $EXPORT_TAGS{"JokerCard"} };
725             push @{ $EXPORT_TAGS{"types"} }, "JokerCard";
726             push @{ $EXPORT_TAGS{"is"} }, "is_JokerCard";
727             push @{ $EXPORT_TAGS{"assert"} }, "assert_JokerCard";
728              
729             }
730              
731             # LaxNum
732             {
733             my $type;
734             sub LaxNum () {
735 0   0 0 0 0 $type ||= bless( [ \&is_LaxNum, "LaxNum", "Types::Standard", "LaxNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
736             }
737              
738             sub is_LaxNum ($) {
739 9 0 0 9 0 54 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) })
  9     0   12  
  9         543  
  0         0  
  0         0  
740             }
741              
742             sub assert_LaxNum ($) {
743 9 0 0 9 0 46 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) ? $_[0] : LaxNum->get_message( $_[0] );
  9 0   0   27  
  9         2786  
  0         0  
  0         0  
744             }
745              
746             $EXPORT_TAGS{"LaxNum"} = [ qw( LaxNum is_LaxNum assert_LaxNum ) ];
747             push @EXPORT_OK, @{ $EXPORT_TAGS{"LaxNum"} };
748             push @{ $EXPORT_TAGS{"types"} }, "LaxNum";
749             push @{ $EXPORT_TAGS{"is"} }, "is_LaxNum";
750             push @{ $EXPORT_TAGS{"assert"} }, "assert_LaxNum";
751              
752             }
753              
754             # LowerCaseSimpleStr
755             {
756             my $type;
757             sub LowerCaseSimpleStr () {
758 0   0 0 0 0 $type ||= bless( [ \&is_LowerCaseSimpleStr, "LowerCaseSimpleStr", "Types::Common::String", "LowerCaseSimpleStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
759             }
760              
761             sub is_LowerCaseSimpleStr ($) {
762 9 0 0 9 0 4717 (do { (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Upper}/ms })
  9 0   0   117  
  9 0       114  
  0 0       0  
  0 0       0  
  0         0  
  0         0  
  0         0  
  0         0  
763             }
764              
765             sub assert_LowerCaseSimpleStr ($) {
766 0 0 0 0 0 0 (do { (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Upper}/ms }) ? $_[0] : LowerCaseSimpleStr->get_message( $_[0] );
767             }
768              
769             $EXPORT_TAGS{"LowerCaseSimpleStr"} = [ qw( LowerCaseSimpleStr is_LowerCaseSimpleStr assert_LowerCaseSimpleStr ) ];
770             push @EXPORT_OK, @{ $EXPORT_TAGS{"LowerCaseSimpleStr"} };
771             push @{ $EXPORT_TAGS{"types"} }, "LowerCaseSimpleStr";
772             push @{ $EXPORT_TAGS{"is"} }, "is_LowerCaseSimpleStr";
773             push @{ $EXPORT_TAGS{"assert"} }, "assert_LowerCaseSimpleStr";
774              
775             }
776              
777             # LowerCaseStr
778             {
779             my $type;
780             sub LowerCaseStr () {
781 0   0 0 0 0 $type ||= bless( [ \&is_LowerCaseStr, "LowerCaseStr", "Types::Common::String", "LowerCaseStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
782             }
783              
784             sub is_LowerCaseStr ($) {
785 0 0   0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Upper}/ms })
  0 0       0  
  0 0       0  
  0 0       0  
  0         0  
786             }
787              
788             sub assert_LowerCaseStr ($) {
789 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Upper}/ms }) ? $_[0] : LowerCaseStr->get_message( $_[0] );
790             }
791              
792             $EXPORT_TAGS{"LowerCaseStr"} = [ qw( LowerCaseStr is_LowerCaseStr assert_LowerCaseStr ) ];
793             push @EXPORT_OK, @{ $EXPORT_TAGS{"LowerCaseStr"} };
794             push @{ $EXPORT_TAGS{"types"} }, "LowerCaseStr";
795             push @{ $EXPORT_TAGS{"is"} }, "is_LowerCaseStr";
796             push @{ $EXPORT_TAGS{"assert"} }, "assert_LowerCaseStr";
797              
798             }
799              
800             # Map
801             {
802             my $type;
803             sub Map () {
804 0   0 0 0 0 $type ||= bless( [ \&is_Map, "Map", "Types::Standard", "Map" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
805             }
806              
807             sub is_Map ($) {
808 0     0 0 0 (ref($_[0]) eq 'HASH')
809             }
810              
811             sub assert_Map ($) {
812 0 0   0 0 0 (ref($_[0]) eq 'HASH') ? $_[0] : Map->get_message( $_[0] );
813             }
814              
815             $EXPORT_TAGS{"Map"} = [ qw( Map is_Map assert_Map ) ];
816             push @EXPORT_OK, @{ $EXPORT_TAGS{"Map"} };
817             push @{ $EXPORT_TAGS{"types"} }, "Map";
818             push @{ $EXPORT_TAGS{"is"} }, "is_Map";
819             push @{ $EXPORT_TAGS{"assert"} }, "assert_Map";
820              
821             }
822              
823             # Maybe
824             {
825             my $type;
826             sub Maybe () {
827 0   0 0 0 0 $type ||= bless( [ \&is_Maybe, "Maybe", "Types::Standard", "Maybe" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
828             }
829              
830             sub is_Maybe ($) {
831 0     0 0 0 (!!1)
832             }
833              
834             sub assert_Maybe ($) {
835 0     0 0 0 (!!1) ? $_[0] : Maybe->get_message( $_[0] );
836             }
837              
838             $EXPORT_TAGS{"Maybe"} = [ qw( Maybe is_Maybe assert_Maybe ) ];
839             push @EXPORT_OK, @{ $EXPORT_TAGS{"Maybe"} };
840             push @{ $EXPORT_TAGS{"types"} }, "Maybe";
841             push @{ $EXPORT_TAGS{"is"} }, "is_Maybe";
842             push @{ $EXPORT_TAGS{"assert"} }, "assert_Maybe";
843              
844             }
845              
846             # NegativeInt
847             {
848             my $type;
849             sub NegativeInt () {
850 0   0 0 0 0 $type ||= bless( [ \&is_NegativeInt, "NegativeInt", "Types::Common::Numeric", "NegativeInt" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
851             }
852              
853             sub is_NegativeInt ($) {
854 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] < 0))
  0 0       0  
  0         0  
  0         0  
855             }
856              
857             sub assert_NegativeInt ($) {
858 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] < 0)) ? $_[0] : NegativeInt->get_message( $_[0] );
859             }
860              
861             $EXPORT_TAGS{"NegativeInt"} = [ qw( NegativeInt is_NegativeInt assert_NegativeInt ) ];
862             push @EXPORT_OK, @{ $EXPORT_TAGS{"NegativeInt"} };
863             push @{ $EXPORT_TAGS{"types"} }, "NegativeInt";
864             push @{ $EXPORT_TAGS{"is"} }, "is_NegativeInt";
865             push @{ $EXPORT_TAGS{"assert"} }, "assert_NegativeInt";
866              
867             }
868              
869             # NegativeNum
870             {
871             my $type;
872             sub NegativeNum () {
873 0   0 0 0 0 $type ||= bless( [ \&is_NegativeNum, "NegativeNum", "Types::Common::Numeric", "NegativeNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
874             }
875              
876             sub is_NegativeNum ($) {
877 9 0 0 9 0 166906 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] < 0))
  9 0   0   19  
  9         501  
  0         0  
  0         0  
  0         0  
878             }
879              
880             sub assert_NegativeNum ($) {
881 9 0 0 9 0 43 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] < 0)) ? $_[0] : NegativeNum->get_message( $_[0] );
  9     0   15  
  9         3036  
  0         0  
882             }
883              
884             $EXPORT_TAGS{"NegativeNum"} = [ qw( NegativeNum is_NegativeNum assert_NegativeNum ) ];
885             push @EXPORT_OK, @{ $EXPORT_TAGS{"NegativeNum"} };
886             push @{ $EXPORT_TAGS{"types"} }, "NegativeNum";
887             push @{ $EXPORT_TAGS{"is"} }, "is_NegativeNum";
888             push @{ $EXPORT_TAGS{"assert"} }, "assert_NegativeNum";
889              
890             }
891              
892             # NegativeOrZeroInt
893             {
894             my $type;
895             sub NegativeOrZeroInt () {
896 0   0 0 0 0 $type ||= bless( [ \&is_NegativeOrZeroInt, "NegativeOrZeroInt", "Types::Common::Numeric", "NegativeOrZeroInt" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
897             }
898              
899             sub is_NegativeOrZeroInt ($) {
900 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] <= 0))
  0 0       0  
  0         0  
  0         0  
901             }
902              
903             sub assert_NegativeOrZeroInt ($) {
904 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] <= 0)) ? $_[0] : NegativeOrZeroInt->get_message( $_[0] );
905             }
906              
907             $EXPORT_TAGS{"NegativeOrZeroInt"} = [ qw( NegativeOrZeroInt is_NegativeOrZeroInt assert_NegativeOrZeroInt ) ];
908             push @EXPORT_OK, @{ $EXPORT_TAGS{"NegativeOrZeroInt"} };
909             push @{ $EXPORT_TAGS{"types"} }, "NegativeOrZeroInt";
910             push @{ $EXPORT_TAGS{"is"} }, "is_NegativeOrZeroInt";
911             push @{ $EXPORT_TAGS{"assert"} }, "assert_NegativeOrZeroInt";
912              
913             }
914              
915             # NegativeOrZeroNum
916             {
917             my $type;
918             sub NegativeOrZeroNum () {
919 0   0 0 0 0 $type ||= bless( [ \&is_NegativeOrZeroNum, "NegativeOrZeroNum", "Types::Common::Numeric", "NegativeOrZeroNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
920             }
921              
922             sub is_NegativeOrZeroNum ($) {
923 9 0 0 9 0 51 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] <= 0))
  9 0   0   15  
  9         471  
  0         0  
  0         0  
  0         0  
924             }
925              
926             sub assert_NegativeOrZeroNum ($) {
927 9 0 0 9 0 39 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] <= 0)) ? $_[0] : NegativeOrZeroNum->get_message( $_[0] );
  9     0   16  
  9         5060  
  0         0  
928             }
929              
930             $EXPORT_TAGS{"NegativeOrZeroNum"} = [ qw( NegativeOrZeroNum is_NegativeOrZeroNum assert_NegativeOrZeroNum ) ];
931             push @EXPORT_OK, @{ $EXPORT_TAGS{"NegativeOrZeroNum"} };
932             push @{ $EXPORT_TAGS{"types"} }, "NegativeOrZeroNum";
933             push @{ $EXPORT_TAGS{"is"} }, "is_NegativeOrZeroNum";
934             push @{ $EXPORT_TAGS{"assert"} }, "assert_NegativeOrZeroNum";
935              
936             }
937              
938             # NonEmptySimpleStr
939             {
940             my $type;
941             sub NonEmptySimpleStr () {
942 0   0 0 0 0 $type ||= bless( [ \&is_NonEmptySimpleStr, "NonEmptySimpleStr", "Types::Common::String", "NonEmptySimpleStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
943             }
944              
945             sub is_NonEmptySimpleStr ($) {
946 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0))
  0 0       0  
  0 0       0  
  0 0       0  
947             }
948              
949             sub assert_NonEmptySimpleStr ($) {
950 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0)) ? $_[0] : NonEmptySimpleStr->get_message( $_[0] );
951             }
952              
953             $EXPORT_TAGS{"NonEmptySimpleStr"} = [ qw( NonEmptySimpleStr is_NonEmptySimpleStr assert_NonEmptySimpleStr ) ];
954             push @EXPORT_OK, @{ $EXPORT_TAGS{"NonEmptySimpleStr"} };
955             push @{ $EXPORT_TAGS{"types"} }, "NonEmptySimpleStr";
956             push @{ $EXPORT_TAGS{"is"} }, "is_NonEmptySimpleStr";
957             push @{ $EXPORT_TAGS{"assert"} }, "assert_NonEmptySimpleStr";
958              
959             }
960              
961             # NonEmptyStr
962             {
963             my $type;
964             sub NonEmptyStr () {
965 7   100 7 0 112 $type ||= bless( [ \&is_NonEmptyStr, "NonEmptyStr", "Types::Common::String", "NonEmptyStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
966             }
967              
968             sub is_NonEmptyStr ($) {
969 0 0   0 0 0 ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0))
  0 0       0  
  0 0       0  
970             }
971              
972             sub assert_NonEmptyStr ($) {
973 0 0 0 0 0 0 ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0)) ? $_[0] : NonEmptyStr->get_message( $_[0] );
974             }
975              
976             $EXPORT_TAGS{"NonEmptyStr"} = [ qw( NonEmptyStr is_NonEmptyStr assert_NonEmptyStr ) ];
977             push @EXPORT_OK, @{ $EXPORT_TAGS{"NonEmptyStr"} };
978             push @{ $EXPORT_TAGS{"types"} }, "NonEmptyStr";
979             push @{ $EXPORT_TAGS{"is"} }, "is_NonEmptyStr";
980             push @{ $EXPORT_TAGS{"assert"} }, "assert_NonEmptyStr";
981              
982             }
983              
984             # Num
985             {
986             my $type;
987             sub Num () {
988 0   0 0 0 0 $type ||= bless( [ \&is_Num, "Num", "Types::Standard", "Num" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
989             }
990              
991             sub is_Num ($) {
992 9 0 0 9 0 56 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) })
  9     0   13  
  9         427  
  0         0  
  0         0  
993             }
994              
995             sub assert_Num ($) {
996 9 0 0 9 0 41 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) ? $_[0] : Num->get_message( $_[0] );
  9 0   0   14  
  9         1254  
  0         0  
  0         0  
997             }
998              
999             $EXPORT_TAGS{"Num"} = [ qw( Num is_Num assert_Num ) ];
1000             push @EXPORT_OK, @{ $EXPORT_TAGS{"Num"} };
1001             push @{ $EXPORT_TAGS{"types"} }, "Num";
1002             push @{ $EXPORT_TAGS{"is"} }, "is_Num";
1003             push @{ $EXPORT_TAGS{"assert"} }, "assert_Num";
1004              
1005             }
1006              
1007             # NumRange
1008             {
1009             my $type;
1010             sub NumRange () {
1011 0   0 0 0 0 $type ||= bless( [ \&is_NumRange, "NumRange", "Types::Common::Numeric", "NumRange" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1012             }
1013              
1014             sub is_NumRange ($) {
1015 9 0 0 9 0 46 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) })
  9     0   14  
  9         413  
  0         0  
  0         0  
1016             }
1017              
1018             sub assert_NumRange ($) {
1019 9 0 0 9 0 68 (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) ? $_[0] : NumRange->get_message( $_[0] );
  9 0   0   12  
  9         1331  
  0         0  
  0         0  
1020             }
1021              
1022             $EXPORT_TAGS{"NumRange"} = [ qw( NumRange is_NumRange assert_NumRange ) ];
1023             push @EXPORT_OK, @{ $EXPORT_TAGS{"NumRange"} };
1024             push @{ $EXPORT_TAGS{"types"} }, "NumRange";
1025             push @{ $EXPORT_TAGS{"is"} }, "is_NumRange";
1026             push @{ $EXPORT_TAGS{"assert"} }, "assert_NumRange";
1027              
1028             }
1029              
1030             # NumericCard
1031             {
1032             my $type;
1033             sub NumericCard () {
1034 0   0 0 0 0 $type ||= bless( [ \&is_NumericCard, "NumericCard", "Acme::Mitey::Cards::Types::Source", "NumericCard" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1035             }
1036              
1037             sub is_NumericCard ($) {
1038 9 0   9 0 45 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Numeric]) })
  9     0   16  
  9         404  
  0         0  
  0         0  
1039             }
1040              
1041             sub assert_NumericCard ($) {
1042 9 0   9 0 38 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Card::Numeric]) }) ? $_[0] : NumericCard->get_message( $_[0] );
  9 0   0   22  
  9         3748  
  0         0  
  0         0  
1043             }
1044              
1045             $EXPORT_TAGS{"NumericCard"} = [ qw( NumericCard is_NumericCard assert_NumericCard ) ];
1046             push @EXPORT_OK, @{ $EXPORT_TAGS{"NumericCard"} };
1047             push @{ $EXPORT_TAGS{"types"} }, "NumericCard";
1048             push @{ $EXPORT_TAGS{"is"} }, "is_NumericCard";
1049             push @{ $EXPORT_TAGS{"assert"} }, "assert_NumericCard";
1050              
1051             }
1052              
1053             # NumericCode
1054             {
1055             my $type;
1056             sub NumericCode () {
1057 0   0 0 0 0 $type ||= bless( [ \&is_NumericCode, "NumericCode", "Types::Common::String", "NumericCode" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1058             }
1059              
1060             sub is_NumericCode ($) {
1061 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && ($_[0] =~ m/^[0-9]+$/))
  0 0       0  
  0 0       0  
  0 0       0  
1062             }
1063              
1064             sub assert_NumericCode ($) {
1065 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && ($_[0] =~ m/^[0-9]+$/)) ? $_[0] : NumericCode->get_message( $_[0] );
1066             }
1067              
1068             $EXPORT_TAGS{"NumericCode"} = [ qw( NumericCode is_NumericCode assert_NumericCode ) ];
1069             push @EXPORT_OK, @{ $EXPORT_TAGS{"NumericCode"} };
1070             push @{ $EXPORT_TAGS{"types"} }, "NumericCode";
1071             push @{ $EXPORT_TAGS{"is"} }, "is_NumericCode";
1072             push @{ $EXPORT_TAGS{"assert"} }, "assert_NumericCode";
1073              
1074             }
1075              
1076             # Object
1077             {
1078             my $type;
1079             sub Object () {
1080 3   50 3 0 23 $type ||= bless( [ \&is_Object, "Object", "Types::Standard", "Object" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1081             }
1082              
1083             sub is_Object ($) {
1084 9     9 0 55 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) })
  9     0   15  
  9         323  
  0         0  
  0         0  
1085             }
1086              
1087             sub assert_Object ($) {
1088 9 0   9 0 39 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) }) ? $_[0] : Object->get_message( $_[0] );
  9     0   24  
  9         1350  
  0         0  
  0         0  
1089             }
1090              
1091             $EXPORT_TAGS{"Object"} = [ qw( Object is_Object assert_Object ) ];
1092             push @EXPORT_OK, @{ $EXPORT_TAGS{"Object"} };
1093             push @{ $EXPORT_TAGS{"types"} }, "Object";
1094             push @{ $EXPORT_TAGS{"is"} }, "is_Object";
1095             push @{ $EXPORT_TAGS{"assert"} }, "assert_Object";
1096              
1097             }
1098              
1099             # OptList
1100             {
1101             my $type;
1102             sub OptList () {
1103 0   0 0 0 0 $type ||= bless( [ \&is_OptList, "OptList", "Types::Standard", "OptList" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1104             }
1105              
1106             sub is_OptList ($) {
1107 9 0 0 9 0 46 (((ref($_[0]) eq 'ARRAY')) && (do { my $ok = 1; for my $inner (@{$_[0]}) { no warnings; ($ok=0) && last unless ref($inner) eq q(ARRAY) && @$inner == 2 && (do { defined($inner->[0]) and do { ref(\$inner->[0]) eq 'SCALAR' or ref(\(my $val = $inner->[0])) eq 'SCALAR' } }); } $ok }))
  9 0 0 0   16  
  9 0 0     1126  
  0 0       0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
1108             }
1109              
1110             sub assert_OptList ($) {
1111 9 0 0 9 0 47 (((ref($_[0]) eq 'ARRAY')) && (do { my $ok = 1; for my $inner (@{$_[0]}) { no warnings; ($ok=0) && last unless ref($inner) eq q(ARRAY) && @$inner == 2 && (do { defined($inner->[0]) and do { ref(\$inner->[0]) eq 'SCALAR' or ref(\(my $val = $inner->[0])) eq 'SCALAR' } }); } $ok })) ? $_[0] : OptList->get_message( $_[0] );
  9     0   14  
  9         2745  
  0         0  
1112             }
1113              
1114             $EXPORT_TAGS{"OptList"} = [ qw( OptList is_OptList assert_OptList ) ];
1115             push @EXPORT_OK, @{ $EXPORT_TAGS{"OptList"} };
1116             push @{ $EXPORT_TAGS{"types"} }, "OptList";
1117             push @{ $EXPORT_TAGS{"is"} }, "is_OptList";
1118             push @{ $EXPORT_TAGS{"assert"} }, "assert_OptList";
1119              
1120             }
1121              
1122             # Optional
1123             {
1124             my $type;
1125             sub Optional () {
1126 0   0 0 0 0 $type ||= bless( [ \&is_Optional, "Optional", "Types::Standard", "Optional" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1127             }
1128              
1129             sub is_Optional ($) {
1130 0     0 0 0 (!!1)
1131             }
1132              
1133             sub assert_Optional ($) {
1134 0     0 0 0 (!!1) ? $_[0] : Optional->get_message( $_[0] );
1135             }
1136              
1137             $EXPORT_TAGS{"Optional"} = [ qw( Optional is_Optional assert_Optional ) ];
1138             push @EXPORT_OK, @{ $EXPORT_TAGS{"Optional"} };
1139             push @{ $EXPORT_TAGS{"types"} }, "Optional";
1140             push @{ $EXPORT_TAGS{"is"} }, "is_Optional";
1141             push @{ $EXPORT_TAGS{"assert"} }, "assert_Optional";
1142              
1143             }
1144              
1145             # Overload
1146             {
1147             my $type;
1148             sub Overload () {
1149 0   0 0 0 0 $type ||= bless( [ \&is_Overload, "Overload", "Types::Standard", "Overload" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1150             }
1151              
1152             sub is_Overload ($) {
1153 9 0   9 0 48 (do { use Scalar::Util (); use overload (); Scalar::Util::blessed($_[0]) and overload::Overloaded($_[0]) })
  9     9   16  
  9     0   103  
  9         33  
  9         14  
  9         395  
  0         0  
  0         0  
1154             }
1155              
1156             sub assert_Overload ($) {
1157 9 0   9 0 38 (do { use Scalar::Util (); use overload (); Scalar::Util::blessed($_[0]) and overload::Overloaded($_[0]) }) ? $_[0] : Overload->get_message( $_[0] );
  9 0   9   13  
  9     0   95  
  9         29  
  9         15  
  9         5336  
  0         0  
  0         0  
1158             }
1159              
1160             $EXPORT_TAGS{"Overload"} = [ qw( Overload is_Overload assert_Overload ) ];
1161             push @EXPORT_OK, @{ $EXPORT_TAGS{"Overload"} };
1162             push @{ $EXPORT_TAGS{"types"} }, "Overload";
1163             push @{ $EXPORT_TAGS{"is"} }, "is_Overload";
1164             push @{ $EXPORT_TAGS{"assert"} }, "assert_Overload";
1165              
1166             }
1167              
1168             # Password
1169             {
1170             my $type;
1171             sub Password () {
1172 0   0 0 0 0 $type ||= bless( [ \&is_Password, "Password", "Types::Common::String", "Password" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1173             }
1174              
1175             sub is_Password ($) {
1176 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 3))
  0 0       0  
  0 0       0  
  0 0       0  
1177             }
1178              
1179             sub assert_Password ($) {
1180 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 3)) ? $_[0] : Password->get_message( $_[0] );
1181             }
1182              
1183             $EXPORT_TAGS{"Password"} = [ qw( Password is_Password assert_Password ) ];
1184             push @EXPORT_OK, @{ $EXPORT_TAGS{"Password"} };
1185             push @{ $EXPORT_TAGS{"types"} }, "Password";
1186             push @{ $EXPORT_TAGS{"is"} }, "is_Password";
1187             push @{ $EXPORT_TAGS{"assert"} }, "assert_Password";
1188              
1189             }
1190              
1191             # PositiveInt
1192             {
1193             my $type;
1194             sub PositiveInt () {
1195 0   0 0 0 0 $type ||= bless( [ \&is_PositiveInt, "PositiveInt", "Types::Common::Numeric", "PositiveInt" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1196             }
1197              
1198             sub is_PositiveInt ($) {
1199 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] > 0))
  0 0       0  
  0         0  
  0         0  
1200             }
1201              
1202             sub assert_PositiveInt ($) {
1203 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] > 0)) ? $_[0] : PositiveInt->get_message( $_[0] );
1204             }
1205              
1206             $EXPORT_TAGS{"PositiveInt"} = [ qw( PositiveInt is_PositiveInt assert_PositiveInt ) ];
1207             push @EXPORT_OK, @{ $EXPORT_TAGS{"PositiveInt"} };
1208             push @{ $EXPORT_TAGS{"types"} }, "PositiveInt";
1209             push @{ $EXPORT_TAGS{"is"} }, "is_PositiveInt";
1210             push @{ $EXPORT_TAGS{"assert"} }, "assert_PositiveInt";
1211              
1212             }
1213              
1214             # PositiveNum
1215             {
1216             my $type;
1217             sub PositiveNum () {
1218 0   0 0 0 0 $type ||= bless( [ \&is_PositiveNum, "PositiveNum", "Types::Common::Numeric", "PositiveNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1219             }
1220              
1221             sub is_PositiveNum ($) {
1222 9 0 0 9 0 52 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] > 0))
  9 0   0   17  
  9         492  
  0         0  
  0         0  
  0         0  
1223             }
1224              
1225             sub assert_PositiveNum ($) {
1226 9 0 0 9 0 37 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] > 0)) ? $_[0] : PositiveNum->get_message( $_[0] );
  9     0   17  
  9         3265  
  0         0  
1227             }
1228              
1229             $EXPORT_TAGS{"PositiveNum"} = [ qw( PositiveNum is_PositiveNum assert_PositiveNum ) ];
1230             push @EXPORT_OK, @{ $EXPORT_TAGS{"PositiveNum"} };
1231             push @{ $EXPORT_TAGS{"types"} }, "PositiveNum";
1232             push @{ $EXPORT_TAGS{"is"} }, "is_PositiveNum";
1233             push @{ $EXPORT_TAGS{"assert"} }, "assert_PositiveNum";
1234              
1235             }
1236              
1237             # PositiveOrZeroInt
1238             {
1239             my $type;
1240             sub PositiveOrZeroInt () {
1241 0   0 0 0 0 $type ||= bless( [ \&is_PositiveOrZeroInt, "PositiveOrZeroInt", "Types::Common::Numeric", "PositiveOrZeroInt" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1242             }
1243              
1244             sub is_PositiveOrZeroInt ($) {
1245 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= 0))
  0 0       0  
  0         0  
  0         0  
1246             }
1247              
1248             sub assert_PositiveOrZeroInt ($) {
1249 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= 0)) ? $_[0] : PositiveOrZeroInt->get_message( $_[0] );
1250             }
1251              
1252             $EXPORT_TAGS{"PositiveOrZeroInt"} = [ qw( PositiveOrZeroInt is_PositiveOrZeroInt assert_PositiveOrZeroInt ) ];
1253             push @EXPORT_OK, @{ $EXPORT_TAGS{"PositiveOrZeroInt"} };
1254             push @{ $EXPORT_TAGS{"types"} }, "PositiveOrZeroInt";
1255             push @{ $EXPORT_TAGS{"is"} }, "is_PositiveOrZeroInt";
1256             push @{ $EXPORT_TAGS{"assert"} }, "assert_PositiveOrZeroInt";
1257              
1258             }
1259              
1260             # PositiveOrZeroNum
1261             {
1262             my $type;
1263             sub PositiveOrZeroNum () {
1264 0   0 0 0 0 $type ||= bless( [ \&is_PositiveOrZeroNum, "PositiveOrZeroNum", "Types::Common::Numeric", "PositiveOrZeroNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1265             }
1266              
1267             sub is_PositiveOrZeroNum ($) {
1268 9 0 0 9 0 52 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] >= 0))
  9 0   0   15  
  9         487  
  0         0  
  0         0  
  0         0  
1269             }
1270              
1271             sub assert_PositiveOrZeroNum ($) {
1272 9 0 0 9 0 37 (do { (do { use Scalar::Util (); defined($_[0]) && !ref($_[0]) && Scalar::Util::looks_like_number($_[0]) }) } && ($_[0] >= 0)) ? $_[0] : PositiveOrZeroNum->get_message( $_[0] );
  9     0   18  
  9         2713  
  0         0  
1273             }
1274              
1275             $EXPORT_TAGS{"PositiveOrZeroNum"} = [ qw( PositiveOrZeroNum is_PositiveOrZeroNum assert_PositiveOrZeroNum ) ];
1276             push @EXPORT_OK, @{ $EXPORT_TAGS{"PositiveOrZeroNum"} };
1277             push @{ $EXPORT_TAGS{"types"} }, "PositiveOrZeroNum";
1278             push @{ $EXPORT_TAGS{"is"} }, "is_PositiveOrZeroNum";
1279             push @{ $EXPORT_TAGS{"assert"} }, "assert_PositiveOrZeroNum";
1280              
1281             }
1282              
1283             # Ref
1284             {
1285             my $type;
1286             sub Ref () {
1287 0   0 0 0 0 $type ||= bless( [ \&is_Ref, "Ref", "Types::Standard", "Ref" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1288             }
1289              
1290             sub is_Ref ($) {
1291 0     0 0 0 (!!ref($_[0]))
1292             }
1293              
1294             sub assert_Ref ($) {
1295 0 0   0 0 0 (!!ref($_[0])) ? $_[0] : Ref->get_message( $_[0] );
1296             }
1297              
1298             $EXPORT_TAGS{"Ref"} = [ qw( Ref is_Ref assert_Ref ) ];
1299             push @EXPORT_OK, @{ $EXPORT_TAGS{"Ref"} };
1300             push @{ $EXPORT_TAGS{"types"} }, "Ref";
1301             push @{ $EXPORT_TAGS{"is"} }, "is_Ref";
1302             push @{ $EXPORT_TAGS{"assert"} }, "assert_Ref";
1303              
1304             }
1305              
1306             # RegexpRef
1307             {
1308             my $type;
1309             sub RegexpRef () {
1310 0   0 0 0 0 $type ||= bless( [ \&is_RegexpRef, "RegexpRef", "Types::Standard", "RegexpRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1311             }
1312              
1313             sub is_RegexpRef ($) {
1314 9 0 0 9 0 54 (do { use Scalar::Util (); use re (); ref($_[0]) && !!re::is_regexp($_[0]) or Scalar::Util::blessed($_[0]) && $_[0]->isa('Regexp') })
  9   0 9   12  
  9     0   105  
  9         37  
  9         10  
  9         518  
  0         0  
  0         0  
1315             }
1316              
1317             sub assert_RegexpRef ($) {
1318 9 0 0 9 0 40 (do { use Scalar::Util (); use re (); ref($_[0]) && !!re::is_regexp($_[0]) or Scalar::Util::blessed($_[0]) && $_[0]->isa('Regexp') }) ? $_[0] : RegexpRef->get_message( $_[0] );
  9 0 0 9   13  
  9     0   100  
  9         29  
  9         15  
  9         1445  
  0         0  
  0         0  
1319             }
1320              
1321             $EXPORT_TAGS{"RegexpRef"} = [ qw( RegexpRef is_RegexpRef assert_RegexpRef ) ];
1322             push @EXPORT_OK, @{ $EXPORT_TAGS{"RegexpRef"} };
1323             push @{ $EXPORT_TAGS{"types"} }, "RegexpRef";
1324             push @{ $EXPORT_TAGS{"is"} }, "is_RegexpRef";
1325             push @{ $EXPORT_TAGS{"assert"} }, "assert_RegexpRef";
1326              
1327             }
1328              
1329             # RoleName
1330             {
1331             my $type;
1332             sub RoleName () {
1333 0   0 0 0 0 $type ||= bless( [ \&is_RoleName, "RoleName", "Types::Standard", "RoleName" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1334             }
1335              
1336             sub is_RoleName ($) {
1337 0     0 0 0 do { (sub {
1338 9     9   45 no strict 'refs';
  9         11  
  9         1873  
1339 0 0   0   0 return !!0 if ref $_[0];
1340 0 0       0 return !!0 if not $_[0];
1341 0 0       0 return !!0 if ref(do { my $tmpstr = $_[0]; \$tmpstr }) ne 'SCALAR';
  0         0  
  0         0  
1342 0         0 my $stash = \%{"$_[0]\::"};
  0         0  
1343 0 0 0     0 return !!1 if exists($stash->{'ISA'}) && *{$stash->{'ISA'}}{ARRAY} && @{$_[0].'::ISA'};
  0   0     0  
  0         0  
1344 0 0       0 return !!1 if exists($stash->{'VERSION'});
1345 0         0 foreach my $globref (values %$stash) {
1346             return !!1
1347             if ref \$globref eq 'GLOB'
1348 0         0 ? *{$globref}{CODE}
1349 0 0       0 : ref $globref; # const or sub ref
    0          
1350             }
1351 0         0 return !!0;
1352 0 0       0 })->(do { my $tmp = $_[0] }) and not $_[0]->can('new') }
  0         0  
1353             }
1354              
1355             sub assert_RoleName ($) {
1356 0 0   0 0 0 do { (sub {
1357 9     9   48 no strict 'refs';
  9         11  
  9         4080  
1358 0 0   0   0 return !!0 if ref $_[0];
1359 0 0       0 return !!0 if not $_[0];
1360 0 0       0 return !!0 if ref(do { my $tmpstr = $_[0]; \$tmpstr }) ne 'SCALAR';
  0         0  
  0         0  
1361 0         0 my $stash = \%{"$_[0]\::"};
  0         0  
1362 0 0 0     0 return !!1 if exists($stash->{'ISA'}) && *{$stash->{'ISA'}}{ARRAY} && @{$_[0].'::ISA'};
  0   0     0  
  0         0  
1363 0 0       0 return !!1 if exists($stash->{'VERSION'});
1364 0         0 foreach my $globref (values %$stash) {
1365             return !!1
1366             if ref \$globref eq 'GLOB'
1367 0         0 ? *{$globref}{CODE}
1368 0 0       0 : ref $globref; # const or sub ref
    0          
1369             }
1370 0         0 return !!0;
1371 0 0       0 })->(do { my $tmp = $_[0] }) and not $_[0]->can('new') } ? $_[0] : RoleName->get_message( $_[0] );
  0         0  
1372             }
1373              
1374             $EXPORT_TAGS{"RoleName"} = [ qw( RoleName is_RoleName assert_RoleName ) ];
1375             push @EXPORT_OK, @{ $EXPORT_TAGS{"RoleName"} };
1376             push @{ $EXPORT_TAGS{"types"} }, "RoleName";
1377             push @{ $EXPORT_TAGS{"is"} }, "is_RoleName";
1378             push @{ $EXPORT_TAGS{"assert"} }, "assert_RoleName";
1379              
1380             }
1381              
1382             # ScalarRef
1383             {
1384             my $type;
1385             sub ScalarRef () {
1386 0   0 0 0 0 $type ||= bless( [ \&is_ScalarRef, "ScalarRef", "Types::Standard", "ScalarRef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1387             }
1388              
1389             sub is_ScalarRef ($) {
1390 0 0   0 0 0 (ref($_[0]) eq 'SCALAR' or ref($_[0]) eq 'REF')
1391             }
1392              
1393             sub assert_ScalarRef ($) {
1394 0 0 0 0 0 0 (ref($_[0]) eq 'SCALAR' or ref($_[0]) eq 'REF') ? $_[0] : ScalarRef->get_message( $_[0] );
1395             }
1396              
1397             $EXPORT_TAGS{"ScalarRef"} = [ qw( ScalarRef is_ScalarRef assert_ScalarRef ) ];
1398             push @EXPORT_OK, @{ $EXPORT_TAGS{"ScalarRef"} };
1399             push @{ $EXPORT_TAGS{"types"} }, "ScalarRef";
1400             push @{ $EXPORT_TAGS{"is"} }, "is_ScalarRef";
1401             push @{ $EXPORT_TAGS{"assert"} }, "assert_ScalarRef";
1402              
1403             }
1404              
1405             # Set
1406             {
1407             my $type;
1408             sub Set () {
1409 0   0 0 0 0 $type ||= bless( [ \&is_Set, "Set", "Acme::Mitey::Cards::Types::Source", "Set" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1410             }
1411              
1412             sub is_Set ($) {
1413 9 0   9 0 52 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Set]) })
  9     0   13  
  9         551  
  0         0  
  0         0  
1414             }
1415              
1416             sub assert_Set ($) {
1417 9 0   9 0 46 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Set]) }) ? $_[0] : Set->get_message( $_[0] );
  9 0   0   13  
  9         21323  
  0         0  
  0         0  
1418             }
1419              
1420             $EXPORT_TAGS{"Set"} = [ qw( Set is_Set assert_Set ) ];
1421             push @EXPORT_OK, @{ $EXPORT_TAGS{"Set"} };
1422             push @{ $EXPORT_TAGS{"types"} }, "Set";
1423             push @{ $EXPORT_TAGS{"is"} }, "is_Set";
1424             push @{ $EXPORT_TAGS{"assert"} }, "assert_Set";
1425              
1426             }
1427              
1428             # SimpleStr
1429             {
1430             my $type;
1431             sub SimpleStr () {
1432 0   0 0 0 0 $type ||= bless( [ \&is_SimpleStr, "SimpleStr", "Types::Common::String", "SimpleStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1433             }
1434              
1435             sub is_SimpleStr ($) {
1436 0 0 0 0 0 0 ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/))
  0 0       0  
  0 0       0  
1437             }
1438              
1439             sub assert_SimpleStr ($) {
1440 0 0 0 0 0 0 ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) ? $_[0] : SimpleStr->get_message( $_[0] );
1441             }
1442              
1443             $EXPORT_TAGS{"SimpleStr"} = [ qw( SimpleStr is_SimpleStr assert_SimpleStr ) ];
1444             push @EXPORT_OK, @{ $EXPORT_TAGS{"SimpleStr"} };
1445             push @{ $EXPORT_TAGS{"types"} }, "SimpleStr";
1446             push @{ $EXPORT_TAGS{"is"} }, "is_SimpleStr";
1447             push @{ $EXPORT_TAGS{"assert"} }, "assert_SimpleStr";
1448              
1449             }
1450              
1451             # SingleDigit
1452             {
1453             my $type;
1454             sub SingleDigit () {
1455 0   0 0 0 0 $type ||= bless( [ \&is_SingleDigit, "SingleDigit", "Types::Common::Numeric", "SingleDigit" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1456             }
1457              
1458             sub is_SingleDigit ($) {
1459 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= -9) && ($_[0] <= 9))
  0 0 0     0  
  0         0  
  0         0  
1460             }
1461              
1462             sub assert_SingleDigit ($) {
1463 0 0 0 0 0 0 (do { (do { my $tmp = $_[0]; defined($tmp) and !ref($tmp) and $tmp =~ /\A-?[0-9]+\z/ }) } && ($_[0] >= -9) && ($_[0] <= 9)) ? $_[0] : SingleDigit->get_message( $_[0] );
1464             }
1465              
1466             $EXPORT_TAGS{"SingleDigit"} = [ qw( SingleDigit is_SingleDigit assert_SingleDigit ) ];
1467             push @EXPORT_OK, @{ $EXPORT_TAGS{"SingleDigit"} };
1468             push @{ $EXPORT_TAGS{"types"} }, "SingleDigit";
1469             push @{ $EXPORT_TAGS{"is"} }, "is_SingleDigit";
1470             push @{ $EXPORT_TAGS{"assert"} }, "assert_SingleDigit";
1471              
1472             }
1473              
1474             # Slurpy
1475             {
1476             my $type;
1477             sub Slurpy () {
1478 0   0 0 0 0 $type ||= bless( [ \&is_Slurpy, "Slurpy", "Types::Standard", "Slurpy" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1479             }
1480              
1481             sub is_Slurpy ($) {
1482 0     0 0 0 (!!1)
1483             }
1484              
1485             sub assert_Slurpy ($) {
1486 0     0 0 0 (!!1) ? $_[0] : Slurpy->get_message( $_[0] );
1487             }
1488              
1489             $EXPORT_TAGS{"Slurpy"} = [ qw( Slurpy is_Slurpy assert_Slurpy ) ];
1490             push @EXPORT_OK, @{ $EXPORT_TAGS{"Slurpy"} };
1491             push @{ $EXPORT_TAGS{"types"} }, "Slurpy";
1492             push @{ $EXPORT_TAGS{"is"} }, "is_Slurpy";
1493             push @{ $EXPORT_TAGS{"assert"} }, "assert_Slurpy";
1494              
1495             }
1496              
1497             # Str
1498             {
1499             my $type;
1500             sub Str () {
1501 21   100 21 0 76 $type ||= bless( [ \&is_Str, "Str", "Types::Standard", "Str" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1502             }
1503              
1504             sub is_Str ($) {
1505 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }
  0 0       0  
  0         0  
1506             }
1507              
1508             sub assert_Str ($) {
1509 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } } ? $_[0] : Str->get_message( $_[0] );
  0 0       0  
  0 0       0  
1510             }
1511              
1512             $EXPORT_TAGS{"Str"} = [ qw( Str is_Str assert_Str ) ];
1513             push @EXPORT_OK, @{ $EXPORT_TAGS{"Str"} };
1514             push @{ $EXPORT_TAGS{"types"} }, "Str";
1515             push @{ $EXPORT_TAGS{"is"} }, "is_Str";
1516             push @{ $EXPORT_TAGS{"assert"} }, "assert_Str";
1517              
1518             }
1519              
1520             # StrLength
1521             {
1522             my $type;
1523             sub StrLength () {
1524 0   0 0 0 0 $type ||= bless( [ \&is_StrLength, "StrLength", "Types::Common::String", "StrLength" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1525             }
1526              
1527             sub is_StrLength ($) {
1528 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }
  0 0       0  
  0         0  
1529             }
1530              
1531             sub assert_StrLength ($) {
1532 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } } ? $_[0] : StrLength->get_message( $_[0] );
  0 0       0  
  0 0       0  
1533             }
1534              
1535             $EXPORT_TAGS{"StrLength"} = [ qw( StrLength is_StrLength assert_StrLength ) ];
1536             push @EXPORT_OK, @{ $EXPORT_TAGS{"StrLength"} };
1537             push @{ $EXPORT_TAGS{"types"} }, "StrLength";
1538             push @{ $EXPORT_TAGS{"is"} }, "is_StrLength";
1539             push @{ $EXPORT_TAGS{"assert"} }, "assert_StrLength";
1540              
1541             }
1542              
1543             # StrMatch
1544             {
1545             my $type;
1546             sub StrMatch () {
1547 0   0 0 0 0 $type ||= bless( [ \&is_StrMatch, "StrMatch", "Types::Standard", "StrMatch" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1548             }
1549              
1550             sub is_StrMatch ($) {
1551 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }
  0 0       0  
  0         0  
1552             }
1553              
1554             sub assert_StrMatch ($) {
1555 0 0   0 0 0 do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } } ? $_[0] : StrMatch->get_message( $_[0] );
  0 0       0  
  0 0       0  
1556             }
1557              
1558             $EXPORT_TAGS{"StrMatch"} = [ qw( StrMatch is_StrMatch assert_StrMatch ) ];
1559             push @EXPORT_OK, @{ $EXPORT_TAGS{"StrMatch"} };
1560             push @{ $EXPORT_TAGS{"types"} }, "StrMatch";
1561             push @{ $EXPORT_TAGS{"is"} }, "is_StrMatch";
1562             push @{ $EXPORT_TAGS{"assert"} }, "assert_StrMatch";
1563              
1564             }
1565              
1566             # StrictNum
1567             {
1568             my $type;
1569             sub StrictNum () {
1570 0   0 0 0 0 $type ||= bless( [ \&is_StrictNum, "StrictNum", "Types::Standard", "StrictNum" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1571             }
1572              
1573             sub is_StrictNum ($) {
1574 0 0 0 0 0 0 do { my $val = $_[0];(defined($val) and not ref($val)) && ( $val =~ /\A[+-]?[0-9]+\z/ || $val =~ /\A(?:[+-]?) # matches optional +- in the beginning
  0   0     0  
  0         0  
1575             (?=[0-9]|\.[0-9]) # matches previous +- only if there is something like 3 or .3
1576             [0-9]* # matches 0-9 zero or more times
1577             (?:\.[0-9]+)? # matches optional .89 or nothing
1578             (?:[Ee](?:[+-]?[0-9]+))? # matches E1 or e1 or e-1 or e+1 etc
1579             \z/x ); }
1580             }
1581              
1582             sub assert_StrictNum ($) {
1583 0 0 0 0 0 0 do { my $val = $_[0];(defined($val) and not ref($val)) && ( $val =~ /\A[+-]?[0-9]+\z/ || $val =~ /\A(?:[+-]?) # matches optional +- in the beginning
  0 0 0     0  
  0         0  
1584             (?=[0-9]|\.[0-9]) # matches previous +- only if there is something like 3 or .3
1585             [0-9]* # matches 0-9 zero or more times
1586             (?:\.[0-9]+)? # matches optional .89 or nothing
1587             (?:[Ee](?:[+-]?[0-9]+))? # matches E1 or e1 or e-1 or e+1 etc
1588             \z/x ); } ? $_[0] : StrictNum->get_message( $_[0] );
1589             }
1590              
1591             $EXPORT_TAGS{"StrictNum"} = [ qw( StrictNum is_StrictNum assert_StrictNum ) ];
1592             push @EXPORT_OK, @{ $EXPORT_TAGS{"StrictNum"} };
1593             push @{ $EXPORT_TAGS{"types"} }, "StrictNum";
1594             push @{ $EXPORT_TAGS{"is"} }, "is_StrictNum";
1595             push @{ $EXPORT_TAGS{"assert"} }, "assert_StrictNum";
1596              
1597             }
1598              
1599             # StrongPassword
1600             {
1601             my $type;
1602             sub StrongPassword () {
1603 0   0 0 0 0 $type ||= bless( [ \&is_StrongPassword, "StrongPassword", "Types::Common::String", "StrongPassword" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1604             }
1605              
1606             sub is_StrongPassword ($) {
1607 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 7) && ($_[0] =~ /[^a-zA-Z]/))
  0 0 0     0  
  0 0       0  
  0 0       0  
1608             }
1609              
1610             sub assert_StrongPassword ($) {
1611 0 0 0 0 0 0 (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 7) && ($_[0] =~ /[^a-zA-Z]/)) ? $_[0] : StrongPassword->get_message( $_[0] );
1612             }
1613              
1614             $EXPORT_TAGS{"StrongPassword"} = [ qw( StrongPassword is_StrongPassword assert_StrongPassword ) ];
1615             push @EXPORT_OK, @{ $EXPORT_TAGS{"StrongPassword"} };
1616             push @{ $EXPORT_TAGS{"types"} }, "StrongPassword";
1617             push @{ $EXPORT_TAGS{"is"} }, "is_StrongPassword";
1618             push @{ $EXPORT_TAGS{"assert"} }, "assert_StrongPassword";
1619              
1620             }
1621              
1622             # Suit
1623             {
1624             my $type;
1625             sub Suit () {
1626 6   100 6 0 40 $type ||= bless( [ \&is_Suit, "Suit", "Acme::Mitey::Cards::Types::Source", "Suit" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1627             }
1628              
1629             sub is_Suit ($) {
1630 9 0   9 0 69 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Suit]) })
  9     0   13  
  9         607  
  0            
  0            
1631             }
1632              
1633             sub assert_Suit ($) {
1634 9 0   9 0 60 (do { use Scalar::Util (); Scalar::Util::blessed($_[0]) and $_[0]->isa(q[Acme::Mitey::Cards::Suit]) }) ? $_[0] : Suit->get_message( $_[0] );
  9 0   0   13  
  9         1621  
  0            
  0            
1635             }
1636              
1637             $EXPORT_TAGS{"Suit"} = [ qw( Suit is_Suit assert_Suit ) ];
1638             push @EXPORT_OK, @{ $EXPORT_TAGS{"Suit"} };
1639             push @{ $EXPORT_TAGS{"types"} }, "Suit";
1640             push @{ $EXPORT_TAGS{"is"} }, "is_Suit";
1641             push @{ $EXPORT_TAGS{"assert"} }, "assert_Suit";
1642              
1643             }
1644              
1645             # Tied
1646             {
1647             my $type;
1648             sub Tied () {
1649 0   0 0 0   $type ||= bless( [ \&is_Tied, "Tied", "Types::Standard", "Tied" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1650             }
1651              
1652             sub is_Tied ($) {
1653 9   0 9 0 52 (do { use Scalar::Util (); (!!ref($_[0])) and !!tied(Scalar::Util::reftype($_[0]) eq 'HASH' ? %{$_[0]} : Scalar::Util::reftype($_[0]) eq 'ARRAY' ? @{$_[0]} : Scalar::Util::reftype($_[0]) =~ /^(SCALAR|REF)$/ ? ${$_[0]} : undef) })
  9     0   19  
  9         1321  
  0            
  0            
1654             }
1655              
1656             sub assert_Tied ($) {
1657 9 0 0 9 0 56 (do { use Scalar::Util (); (!!ref($_[0])) and !!tied(Scalar::Util::reftype($_[0]) eq 'HASH' ? %{$_[0]} : Scalar::Util::reftype($_[0]) eq 'ARRAY' ? @{$_[0]} : Scalar::Util::reftype($_[0]) =~ /^(SCALAR|REF)$/ ? ${$_[0]} : undef) }) ? $_[0] : Tied->get_message( $_[0] );
  9     0   15  
  9         6242  
  0            
  0            
1658             }
1659              
1660             $EXPORT_TAGS{"Tied"} = [ qw( Tied is_Tied assert_Tied ) ];
1661             push @EXPORT_OK, @{ $EXPORT_TAGS{"Tied"} };
1662             push @{ $EXPORT_TAGS{"types"} }, "Tied";
1663             push @{ $EXPORT_TAGS{"is"} }, "is_Tied";
1664             push @{ $EXPORT_TAGS{"assert"} }, "assert_Tied";
1665              
1666             }
1667              
1668             # Tuple
1669             {
1670             my $type;
1671             sub Tuple () {
1672 0   0 0 0   $type ||= bless( [ \&is_Tuple, "Tuple", "Types::Standard", "Tuple" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1673             }
1674              
1675             sub is_Tuple ($) {
1676 0     0 0   (ref($_[0]) eq 'ARRAY')
1677             }
1678              
1679             sub assert_Tuple ($) {
1680 0 0   0 0   (ref($_[0]) eq 'ARRAY') ? $_[0] : Tuple->get_message( $_[0] );
1681             }
1682              
1683             $EXPORT_TAGS{"Tuple"} = [ qw( Tuple is_Tuple assert_Tuple ) ];
1684             push @EXPORT_OK, @{ $EXPORT_TAGS{"Tuple"} };
1685             push @{ $EXPORT_TAGS{"types"} }, "Tuple";
1686             push @{ $EXPORT_TAGS{"is"} }, "is_Tuple";
1687             push @{ $EXPORT_TAGS{"assert"} }, "assert_Tuple";
1688              
1689             }
1690              
1691             # Undef
1692             {
1693             my $type;
1694             sub Undef () {
1695 0   0 0 0   $type ||= bless( [ \&is_Undef, "Undef", "Types::Standard", "Undef" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1696             }
1697              
1698             sub is_Undef ($) {
1699 0     0 0   (!defined($_[0]))
1700             }
1701              
1702             sub assert_Undef ($) {
1703 0 0   0 0   (!defined($_[0])) ? $_[0] : Undef->get_message( $_[0] );
1704             }
1705              
1706             $EXPORT_TAGS{"Undef"} = [ qw( Undef is_Undef assert_Undef ) ];
1707             push @EXPORT_OK, @{ $EXPORT_TAGS{"Undef"} };
1708             push @{ $EXPORT_TAGS{"types"} }, "Undef";
1709             push @{ $EXPORT_TAGS{"is"} }, "is_Undef";
1710             push @{ $EXPORT_TAGS{"assert"} }, "assert_Undef";
1711              
1712             }
1713              
1714             # UpperCaseSimpleStr
1715             {
1716             my $type;
1717             sub UpperCaseSimpleStr () {
1718 0   0 0 0   $type ||= bless( [ \&is_UpperCaseSimpleStr, "UpperCaseSimpleStr", "Types::Common::String", "UpperCaseSimpleStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1719             }
1720              
1721             sub is_UpperCaseSimpleStr ($) {
1722 0 0 0 0 0   (do { (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Lower}/ms })
  0 0          
  0 0          
  0 0          
  0 0          
  0            
1723             }
1724              
1725             sub assert_UpperCaseSimpleStr ($) {
1726 0 0 0 0 0   (do { (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) <= 255) && ($_[0] !~ /\n/)) } && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Lower}/ms }) ? $_[0] : UpperCaseSimpleStr->get_message( $_[0] );
1727             }
1728              
1729             $EXPORT_TAGS{"UpperCaseSimpleStr"} = [ qw( UpperCaseSimpleStr is_UpperCaseSimpleStr assert_UpperCaseSimpleStr ) ];
1730             push @EXPORT_OK, @{ $EXPORT_TAGS{"UpperCaseSimpleStr"} };
1731             push @{ $EXPORT_TAGS{"types"} }, "UpperCaseSimpleStr";
1732             push @{ $EXPORT_TAGS{"is"} }, "is_UpperCaseSimpleStr";
1733             push @{ $EXPORT_TAGS{"assert"} }, "assert_UpperCaseSimpleStr";
1734              
1735             }
1736              
1737             # UpperCaseStr
1738             {
1739             my $type;
1740             sub UpperCaseStr () {
1741 0   0 0 0   $type ||= bless( [ \&is_UpperCaseStr, "UpperCaseStr", "Types::Common::String", "UpperCaseStr" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1742             }
1743              
1744             sub is_UpperCaseStr ($) {
1745 0 0   0 0   (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Lower}/ms })
  0 0          
  0 0          
  0 0          
  0            
1746             }
1747              
1748             sub assert_UpperCaseStr ($) {
1749 0 0 0 0 0   (do { ((do { defined($_[0]) and do { ref(\$_[0]) eq 'SCALAR' or ref(\(my $val = $_[0])) eq 'SCALAR' } }) && (length($_[0]) > 0)) } && do { $_[0] !~ /\p{Lower}/ms }) ? $_[0] : UpperCaseStr->get_message( $_[0] );
1750             }
1751              
1752             $EXPORT_TAGS{"UpperCaseStr"} = [ qw( UpperCaseStr is_UpperCaseStr assert_UpperCaseStr ) ];
1753             push @EXPORT_OK, @{ $EXPORT_TAGS{"UpperCaseStr"} };
1754             push @{ $EXPORT_TAGS{"types"} }, "UpperCaseStr";
1755             push @{ $EXPORT_TAGS{"is"} }, "is_UpperCaseStr";
1756             push @{ $EXPORT_TAGS{"assert"} }, "assert_UpperCaseStr";
1757              
1758             }
1759              
1760             # Value
1761             {
1762             my $type;
1763             sub Value () {
1764 0   0 0 0   $type ||= bless( [ \&is_Value, "Value", "Types::Standard", "Value" ], "Acme::Mitey::Cards::Types::TypeConstraint" );
1765             }
1766              
1767             sub is_Value ($) {
1768 0 0   0 0   (defined($_[0]) and not ref($_[0]))
1769             }
1770              
1771             sub assert_Value ($) {
1772 0 0 0 0 0   (defined($_[0]) and not ref($_[0])) ? $_[0] : Value->get_message( $_[0] );
1773             }
1774              
1775             $EXPORT_TAGS{"Value"} = [ qw( Value is_Value assert_Value ) ];
1776             push @EXPORT_OK, @{ $EXPORT_TAGS{"Value"} };
1777             push @{ $EXPORT_TAGS{"types"} }, "Value";
1778             push @{ $EXPORT_TAGS{"is"} }, "is_Value";
1779             push @{ $EXPORT_TAGS{"assert"} }, "assert_Value";
1780              
1781             }
1782              
1783              
1784             1;
1785             __END__