1 package Moose::Util::TypeConstraints::OptimizedConstraints;
7 use Scalar::Util 'blessed', 'looks_like_number';
10 $VERSION = eval $VERSION;
11 our $AUTHORITY = 'cpan:STEVAN';
13 sub Value { defined($_[0]) && !ref($_[0]) }
15 sub Ref { ref($_[0]) }
17 # We need to use a temporary here to flatten LVALUEs, for instance as in
18 # Str(substr($_,0,255)).
21 defined($value) && ref(\$value) eq 'SCALAR'
24 sub Num { !ref($_[0]) && looks_like_number($_[0]) }
26 sub Int { defined($_[0]) && !ref($_[0]) && $_[0] =~ /^-?[0-9]+$/ }
28 sub ScalarRef { ref($_[0]) eq 'SCALAR' }
29 sub ArrayRef { ref($_[0]) eq 'ARRAY' }
30 sub HashRef { ref($_[0]) eq 'HASH' }
31 sub CodeRef { ref($_[0]) eq 'CODE' }
32 sub RegexpRef { ref($_[0]) eq 'Regexp' }
33 sub GlobRef { ref($_[0]) eq 'GLOB' }
35 sub FileHandle { ref($_[0]) eq 'GLOB' && Scalar::Util::openhandle($_[0]) or blessed($_[0]) && $_[0]->isa("IO::Handle") }
37 sub Object { blessed($_[0]) && blessed($_[0]) ne 'Regexp' }
39 sub Role { Carp::cluck('The Role type is deprecated.'); blessed($_[0]) && $_[0]->can('does') }
42 return Class::MOP::is_class_loaded( $_[0] );
47 && (Class::MOP::class_of($_[0]) || return)->isa('Moose::Meta::Role')
51 # we have XS versions too, ...
52 # 04:09 <@konobi> nothingmuch: konobi.co.uk/code/utilsxs.tar.gz
53 # 04:09 <@konobi> or utilxs.tar.gz iirc
63 Moose::Util::TypeConstraints::OptimizedConstraints - Optimized constraint
64 bodies for various moose types
68 This file contains the hand optimized versions of Moose type constraints,
69 no user serviceable parts inside.
111 All complex software has bugs lurking in it, and this module is no
112 exception. If you find a bug please either email me, or add the bug
117 Yuval Kogman E<lt>nothingmuch@cpan.orgE<gt>
119 =head1 COPYRIGHT AND LICENSE
121 Copyright 2007-2009 by Infinity Interactive, Inc.
123 L<http://www.iinteractive.com>
125 This library is free software; you can redistribute it and/or modify
126 it under the same terms as Perl itself.