aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwreis <wreis@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-01-14 20:17:35 +0000
committerwreis <wreis@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-01-14 20:17:35 +0000
commitef1a41f23f61b708d5e11baf6f09a0a1643651ee (patch)
tree55a5f38d78e17553b68f8ca46b614d4e3e58dbff
parent0402136bb4f1dc2050fb75b7fe8467780288d420 (diff)
downloadreaction-ef1a41f23f61b708d5e11baf6f09a0a1643651ee.tar.gz
reaction-ef1a41f23f61b708d5e11baf6f09a0a1643651ee.zip
added Reaction::Types::CreditCard
-rw-r--r--Makefile.PL1
-rw-r--r--lib/Reaction/Types/CreditCard.pm44
2 files changed, 45 insertions, 0 deletions
diff --git a/Makefile.PL b/Makefile.PL
index d4def09..b73726c 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -31,6 +31,7 @@ requires 'Email::MIME::Creator';
requires 'Text::CSV_XS';
requires 'Devel::Declare' => '0.001006';
requires 'MooseX::Types' => '0.04';
+requires 'Business::CreditCard' => '0.30';
catalyst;
diff --git a/lib/Reaction/Types/CreditCard.pm b/lib/Reaction/Types/CreditCard.pm
new file mode 100644
index 0000000..ec7de56
--- /dev/null
+++ b/lib/Reaction/Types/CreditCard.pm
@@ -0,0 +1,44 @@
+package Reaction::Types::CreditCard;
+
+use MooseX::Types
+ -declare => [qw/CardNumber/];
+
+use Reaction::Types::Core 'NonEmptySimpleStr';
+use Business::CreditCard;
+
+subtype 'CardNumber'
+ => as 'NonEmptySimpleStr'
+ => where { Business::CreditCard->validate($_) }
+ => message {"Must be a valid card number"};
+
+1;
+
+=head1 NAME
+
+Reaction::Types::CreditCard
+
+=head1 DESCRIPTION
+
+=over
+
+=item * CardNumber
+
+=back
+
+=head1 SEE ALSO
+
+=over
+
+=item * L<Reaction::Types::Core>
+
+=back
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut