1 package Moose::Util::TypeConstraints::OptimizedConstraints;
6 use Scalar::Util 'blessed', 'looks_like_number';
9 our $AUTHORITY = 'cpan:STEVAN';
11 sub Value { defined($_[0]) && !ref($_[0]) }
13 sub Ref { ref($_[0]) }
15 sub Str { defined($_[0]) && !ref($_[0]) }
17 sub Num { !ref($_[0]) && looks_like_number($_[0]) }
19 sub Int { defined($_[0]) && !ref($_[0]) && $_[0] =~ /^-?[0-9]+$/ }
22 no warnings 'uninitialized';
23 sub ScalarRef { ref($_[0]) eq 'SCALAR' }
24 sub ArrayRef { ref($_[0]) eq 'ARRAY' }
25 sub HashRef { ref($_[0]) eq 'HASH' }
26 sub CodeRef { ref($_[0]) eq 'CODE' }
27 sub RegexpRef { ref($_[0]) eq 'Regexp' }
28 sub GlobRef { ref($_[0]) eq 'GLOB' }
31 sub FileHandle { ref($_[0]) eq 'GLOB' && Scalar::Util::openhandle($_[0]) or blessed($_[0]) && $_[0]->isa("IO::Handle") }
33 sub Object { blessed($_[0]) && blessed($_[0]) ne 'Regexp' }
35 sub Role { blessed($_[0]) && $_[0]->can('does') }
38 # we have XS versions too, ...
39 # 04:09 <@konobi> nothingmuch: konobi.co.uk/code/utilsxs.tar.gz
40 # 04:09 <@konobi> or utilxs.tar.gz iirc
50 Moose::Util::TypeConstraints::OptimizedConstraints - Optimized constraint
51 bodies for various moose types
55 This file contains the hand optimized versions of Moose type constraints.
93 All complex software has bugs lurking in it, and this module is no
94 exception. If you find a bug please either email me, or add the bug
99 Yuval Kogman E<lt>nothingmuch@cpan.orgE<gt>
101 =head1 COPYRIGHT AND LICENSE
103 Copyright 2006-2008 by Infinity Interactive, Inc.
105 L<http://www.iinteractive.com>
107 This library is free software; you can redistribute it and/or modify
108 it under the same terms as Perl itself.