do not include .git directory
[catagits/Reaction.git] / lib / Reaction / Types / Core.pm
CommitLineData
7adfd53f 1package Reaction::Types::Core;
2
e739c9a2 3use MooseX::Types
4 -declare => [qw/SimpleStr NonEmptySimpleStr Password StrongPassword
fb32a4e0 5 NonEmptyStr PositiveNum PositiveInt SingleDigit URI/];
e739c9a2 6
fb32a4e0 7use MooseX::Types::Moose qw/Str Num Int Object/;
7adfd53f 8
d9a3266f 9subtype SimpleStr,
10 as Str,
11 where { (length($_) <= 255) && ($_ !~ m/\n/) },
12 message { "Must be a single line of no more than 255 chars" };
7adfd53f 13
d9a3266f 14subtype NonEmptySimpleStr,
15 as SimpleStr,
16 where { length($_) > 0 },
17 message { "Must be a non-empty single line of no more than 255 chars" };
7adfd53f 18
19# XXX duplicating constraint msges since moose only uses last message
20
d9a3266f 21subtype Password,
22 as NonEmptySimpleStr,
23 where { length($_) > 3 },
24 message { "Must be between 4 and 255 chars" };
7adfd53f 25
d9a3266f 26subtype StrongPassword,
27 as Password,
28 where { (length($_) > 7) && (m/[^a-zA-Z]/) },
29 message {
e739c9a2 30 "Must be between 8 and 255 chars, and contain a non-alpha char" };
7adfd53f 31
d9a3266f 32subtype NonEmptyStr,
33 as Str,
34 where { length($_) > 0 },
35 message { "Must not be empty" };
36
37subtype PositiveNum,
38 as Num,
39 where { $_ >= 0 },
40 message { "Must be a positive number" };
41
42subtype PositiveInt,
43 as Int,
44 where { $_ >= 0 },
45 message { "Must be a positive integer" };
46
47subtype SingleDigit,
48 as PositiveInt,
49 where { $_ <= 9 },
50 message { "Must be a single digit" };
7adfd53f 51
1190b475 52#message will require moose 0.39
53class_type 'URI';
54#class_type 'URI', message { 'Must be an URI object'};
ad0b52c3 55coerce 'URI', from Str, via { URI->new($_) };
fb32a4e0 56
7adfd53f 571;
58
59=head1 NAME
60
61Reaction::Types::Core
62
63=head1 SYNOPSIS
64
65=head1 DESCRIPTION
66
67Reaction uses the L<Moose> attributes as a base and adds a few of it's own.
68
fb32a4e0 69=over
7adfd53f 70
71=item * SimpleStr
72
73A Str with no new-line characters.
74
75=item * NonEmptySimpleStr
76
77Does 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
fb32a4e0 95=over
7adfd53f 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
111See L<Reaction::Class> for authors.
112
113=head1 LICENSE
114
115See L<Reaction::Class> for the license.
116
117=cut