added clone and inherit fix to Field::Mutable::HiddenArray
[catagits/Reaction.git] / lib / Reaction / Types / Core.pm
1 package Reaction::Types::Core;
2
3 use MooseX::Types
4     -declare => [qw/SimpleStr NonEmptySimpleStr Password StrongPassword
5                     NonEmptyStr PositiveNum PositiveInt SingleDigit URI/];
6
7 use MooseX::Types::Moose qw/Str Num Int Object/;
8
9 subtype SimpleStr,
10   as Str,
11   where { (length($_) <= 255) && ($_ !~ m/\n/) },
12   message { "Must be a single line of no more than 255 chars" };
13
14 subtype NonEmptySimpleStr,
15   as SimpleStr,
16   where { length($_) > 0 },
17   message { "Must be a non-empty single line of no more than 255 chars" };
18
19 # XXX duplicating constraint msges since moose only uses last message
20
21 subtype Password,
22   as NonEmptySimpleStr,
23   where { length($_) > 3 },
24   message { "Must be between 4 and 255 chars" };
25
26 subtype StrongPassword,
27   as Password,
28   where { (length($_) > 7) && (m/[^a-zA-Z]/) },
29   message {
30        "Must be between 8 and 255 chars, and contain a non-alpha char" };
31
32 subtype NonEmptyStr,
33   as Str,
34   where { length($_) > 0 },
35   message { "Must not be empty" };
36
37 subtype PositiveNum,
38   as Num,
39   where { $_ >= 0 },
40   message { "Must be a positive number" };
41
42 subtype PositiveInt,
43   as Int,
44   where { $_ >= 0 },
45   message { "Must be a positive integer" };
46
47 subtype SingleDigit,
48   as PositiveInt,
49   where { $_ <= 9 },
50   message { "Must be a single digit" };
51
52 #message will require moose 0.39
53 class_type 'URI';
54 #class_type 'URI', message { 'Must be an URI object'};
55 coerce 'URI', from Str, via { URI->new($_) };
56
57 1;
58
59 =head1 NAME
60
61 Reaction::Types::Core
62
63 =head1 SYNOPSIS
64
65 =head1 DESCRIPTION
66
67 Reaction uses the L<Moose> attributes as a base and adds a few of it's own.
68
69 =over
70
71 =item * SimpleStr
72
73 A Str with no new-line characters.
74
75 =item * NonEmptySimpleStr
76
77 Does what it says on the tin.
78
79 =item * Password
80
81 =item * StrongPassword
82
83 =item * NonEmptyStr
84
85 =item * PositiveNum
86
87 =item * PositiveInt
88
89 =item * SingleDigit
90
91 =back
92
93 =head1 SEE ALSO
94
95 =over
96
97 =item * L<Moose::Util::TypeConstraints>
98
99 =item * L<Reaction::Types::DBIC>
100
101 =item * L<Reaction::Types::DateTime>
102
103 =item * L<Reaction::Types::Email>
104
105 =item * L<Reaction::Types::File>
106
107 =back
108
109 =head1 AUTHORS
110
111 See L<Reaction::Class> for authors.
112
113 =head1 LICENSE
114
115 See L<Reaction::Class> for the license.
116
117 =cut