2 package Mouse::TypeRegistry;
5 use Scalar::Util qw/looks_like_number blessed openhandle/;
7 no warnings 'uninitialized';
8 sub optimized_constraints {
13 !defined($_) || $_ eq "" || "$_" eq '1' || "$_" eq '0'
15 Undef => sub { !defined($_) },
16 Defined => sub { defined($_) },
17 Value => sub { defined($_) && !ref($_) },
18 Num => sub { !ref($_) && looks_like_number($_) },
19 Int => sub { defined($_) && !ref($_) && /^-?[0-9]+$/ },
20 Str => sub { defined($_) && !ref($_) },
21 ClassName => sub { Mouse::is_class_loaded($_) },
22 Ref => sub { ref($_) },
24 ScalarRef => sub { ref($_) eq 'SCALAR' },
25 ArrayRef => sub { ref($_) eq 'ARRAY' },
26 HashRef => sub { ref($_) eq 'HASH' },
27 CodeRef => sub { ref($_) eq 'CODE' },
28 RegexpRef => sub { ref($_) eq 'Regexp' },
29 GlobRef => sub { ref($_) eq 'GLOB' },
36 && $_->isa("IO::Handle")
39 Object => sub { blessed($_) && blessed($_) ne 'Regexp' },
49 Mouse::TypeRegistry - simple type constraints
53 =head2 optimized_constraints -> HashRef[CODE]
55 Returns the simple type constraints that Mouse understands.