package Reaction::Types::Core;
-use Moose::Util::TypeConstraints;
+use MooseX::Types
+ -declare => [qw/SimpleStr NonEmptySimpleStr Password StrongPassword
+ NonEmptyStr PositiveNum PositiveInt SingleDigit URI/];
-subtype 'SimpleStr'
- => as 'Str'
- => where { (length($_) <= 255) && ($_ !~ m/\n/) }
- => message { "Must be a single line of no more than 255 chars" };
+use MooseX::Types::Moose qw/Str Num Int Object/;
-subtype 'NonEmptySimpleStr'
- => as 'SimpleStr'
- => where { length($_) > 0 }
- => message { "Must be a non-empty single line of no more than 255 chars" };
+subtype SimpleStr,
+ as Str,
+ where { (length($_) <= 255) && ($_ !~ m/\n/) },
+ message { "Must be a single line of no more than 255 chars" };
-# XXX duplicating constraint msges since moose only uses last message
-
-subtype 'Password'
- => as 'NonEmptySimpleStr'
- => where { length($_) > 3 }
- => message { "Must be between 4 and 255 chars" };
-
-subtype 'StrongPassword'
- => as 'Password'
- => where { (length($_) > 7) && (m/[^a-zA-Z]/) }
- => message { "Must be between 8 and 255 chars, and contain a non-alpha char" };
+subtype NonEmptySimpleStr,
+ as SimpleStr,
+ where { length($_) > 0 },
+ message { "Must be a non-empty single line of no more than 255 chars" };
-subtype 'NonEmptyStr'
- => as 'Str'
- => where { length($_) > 0 }
- => message { "Must not be empty" };
-
-subtype 'PositiveNum'
- => as 'Num'
- => where { $_ >= 0 }
- => message { "Must be a positive number" };
-
-subtype 'PositiveInt'
- => as 'Int'
- => where { $_ >= 0 }
- => message { "Must be a positive integer" };
+# XXX duplicating constraint msges since moose only uses last message
-subtype 'SingleDigit'
- => as 'PositiveInt'
- => where { $_ <= 9 }
- => message { "Must be a single digit" };
+subtype Password,
+ as NonEmptySimpleStr,
+ where { length($_) > 3 },
+ message { "Must be between 4 and 255 chars" };
+
+subtype StrongPassword,
+ as Password,
+ where { (length($_) > 7) && (m/[^a-zA-Z]/) },
+ message {
+ "Must be between 8 and 255 chars, and contain a non-alpha char" };
+
+subtype NonEmptyStr,
+ as Str,
+ where { length($_) > 0 },
+ message { "Must not be empty" };
+
+subtype PositiveNum,
+ as Num,
+ where { $_ >= 0 },
+ message { "Must be a positive number" };
+
+subtype PositiveInt,
+ as Int,
+ where { $_ >= 0 },
+ message { "Must be a positive integer" };
+
+subtype SingleDigit,
+ as PositiveInt,
+ where { $_ <= 9 },
+ message { "Must be a single digit" };
+
+#message will require moose 0.39
+class_type 'URI';
+#class_type 'URI', message { 'Must be an URI object'};
+coerce 'URI', from 'Str', via { URI->new($_) };
1;
Reaction uses the L<Moose> attributes as a base and adds a few of it's own.
-=over
+=over
=item * SimpleStr
=head1 SEE ALSO
-=over
+=over
=item * L<Moose::Util::TypeConstraints>