X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FUtil%2FTypeConstraints.pm;h=885788ae75ac1595eb03d18f55dcd68c580b056d;hb=d44f0d03f175f6812650ec7c86cb3b3878667cae;hp=44b0b382de79746141f2e9000197cf178f9560bf;hpb=0f1dae9ac08898098c9f667c77f2e9ad703f70f3;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Util/TypeConstraints.pm b/lib/Mouse/Util/TypeConstraints.pm index 44b0b38..885788a 100644 --- a/lib/Mouse/Util/TypeConstraints.pm +++ b/lib/Mouse/Util/TypeConstraints.pm @@ -7,7 +7,7 @@ use Carp (); use Scalar::Util qw/blessed looks_like_number openhandle/; our @EXPORT = qw( - as where message from via type subtype coerce class_type role_type + as where message from via type subtype coerce class_type role_type enum ); my %TYPE; @@ -161,6 +161,15 @@ sub typecast_constraints { return $value; } +sub enum { + my $name = shift; + my %is_valid = map { $_ => 1 } @_; + + subtype( + $name => where => sub { $is_valid{$_} } + ); +} + 1; __END__