HATE SVK!!! missing file for the typeconstraint refac
[gitmo/Moose.git] / lib / Moose / Util / TypeConstraints / OptimizedConstraints.pm
1 #!/usr/bin/perl
2
3 package Moose::Util::TypeConstraints::OptimizedConstraints;
4
5 use strict;
6 use warnings;
7
8 use Scalar::Util qw(blessed looks_like_number);
9
10 sub Value { defined($_[0]) && !ref($_[0]) }
11
12 sub Ref { ref($_[0]) }
13
14 sub Str { defined($_[0]) && !ref($_[0]) }
15
16 sub Num { !ref($_[0]) && looks_like_number($_[0]) }
17
18 sub Int { defined($_[0]) && !ref($_[0]) && $_[0] =~ /^-?[0-9]+$/ }
19
20 sub ScalarRef { ref($_[0]) eq 'SCALAR' }
21 sub ArrayRef { ref($_[0]) eq 'ARRAY'  }
22 sub HashRef { ref($_[0]) eq 'HASH'   }
23 sub CodeRef { ref($_[0]) eq 'CODE'   }
24 sub RegexpRef { ref($_[0]) eq 'Regexp' }
25 sub GlobRef { ref($_[0]) eq 'GLOB'   }
26
27 sub FileHandle { ref($_[0]) eq 'GLOB' && Scalar::Util::openhandle($_[0]) }
28
29 sub Object { blessed($_[0]) && blessed($_[0]) ne 'Regexp' }
30
31 sub Role { blessed($_[0]) && $_[0]->can('does') }
32
33
34 __PACKAGE__
35
36 __END__
37
38 =pod
39
40 =head1 NAME
41
42 Moose::Util::TypeConstraints::OptimizedConstraints - Optimized constraint
43 bodies for various moose types
44
45 =head1 SYNOPSIS
46
47 =head1 DESCRIPTION
48
49 This file contains optimized versions of Moose type constraints.
50
51 =head1 FUNCTIONS
52
53 =over 4
54
55 =item Value
56
57 =item Ref
58
59 =item Str
60
61 =item Num
62
63 =item Int
64
65 =item ScalarRef
66
67 =item ArrayRef
68
69 =item HashRef
70
71 =item CodeRef
72
73 =item RegexpRef
74
75 =item GlobRef
76
77 =item FileHandle
78
79 =item Object
80
81 =item Role
82
83 =back