initial checkin
[gitmo/MooseX-Types-Common.git] / lib / MooseX / Types / Common.pm
CommitLineData
3379cc45 1package MooseX::Types::Common;
2
3use strict;
4use warnings;
5
6our $VERSION = '0.001000';
7
8use MooseX::Types -declare => [
9 qw(SimpleStr NonEmptySimpleStr Password StrongPassword NonEmptyStr
10 PositiveNum PositiveInt NegativeNum NegativeInt SingleDigit)
11];
12
13use MooseX::Types::Moose qw/Str Num Int Object/;
14
15subtype SimpleStr,
16 as Str,
17 where { (length($_) <= 255) && ($_ !~ m/\n/) },
18 message { "Must be a single line of no more than 255 chars" };
19
20subtype NonEmptySimpleStr,
21 as SimpleStr,
22 where { length($_) > 0 },
23 message { "Must be a non-empty single line of no more than 255 chars" };
24
25# XXX duplicating constraint msges since moose only uses last message
26subtype Password,
27 as NonEmptySimpleStr,
28 where { length($_) > 3 },
29 message { "Must be between 4 and 255 chars" };
30
31subtype StrongPassword,
32 as Password,
33 where { (length($_) > 7) && (m/[^a-zA-Z]/) },
34 message {"Must be between 8 and 255 chars, and contain a non-alpha char" };
35
36subtype NonEmptyStr,
37 as Str,
38 where { length($_) > 0 },
39 message { "Must not be empty" };
40
41subtype PositiveNum,
42 as Num,
43 where { $_ >= 0 },
44 message { "Must be a positive number" };
45
46subtype PositiveInt,
47 as Int,
48 where { $_ >= 0 },
49 message { "Must be a positive integer" };
50
51subtype NegativeNum,
52 as Num,
53 where { $_ <= 0 },
54 message { "Must be a negative number" };
55
56subtype NegativeInt,
57 as Int,
58 where { $_ <= 0 },
59 message { "Must be a negative integer" };
60
61subtype SingleDigit,
62 as PositiveInt,
63 where { $_ <= 9 },
64 message { "Must be a single digit" };
65
661;
67
68=head1 NAME
69
70MooseX::Types::Common
71
72=head1 SYNOPSIS
73
74 use MooseX::Types::Common qw/SimpleStr/;
75 has short_str => (is => 'rw', isa => SimpleStr);
76
77 ...
78 #this will fail
79 $object->short_str("string\nwith\nbreaks");
80
81=head1 DESCRIPTION
82
83A set of commonly-used type constraints that do not ship with Moose by default.
84
85=over
86
87=item * SimpleStr
88
89A Str with no new-line characters.
90
91=item * NonEmptySimpleStr
92
93Does what it says on the tin.
94
95=item * Password
96
97=item * StrongPassword
98
99=item * NonEmptyStr
100
101=item * PositiveNum
102
103=item * PositiveInt
104
105=item * NegativeNum
106
107=item * Int
108
109=item * SingleDigit
110
111=back
112
113=head1 SEE ALSO
114
115=over
116
117=item * L<MooseX::Types>
118
119=item * L<Moose::Util::TypeConstraints>
120
121=back
122
123=head1 AUTHORS
124
125This distribution was extracted from the L<Reaction> code base by Guillermo
126Roditi (groditi).
127
128The original authors of this library are:
129
130=over 4
131
132=item * Matt S. Trout
133
134=item * K. J. Cheetham
135
136=item * Guillermo Roditi
137
138=back
139
140=head1 LICENSE
141
142This library is free software, you can redistribute it and/or modify
143it under the same terms as Perl itself.
144
145=cut