|
NAMEMouseX::Types - Organize your Mouse types in libraries SYNOPSISLibrary Definition package MyLibrary;
# predeclare our own types
use MouseX::Types
-declare => [qw(
PositiveInt NegativeInt
)];
# import builtin types
use MouseX::Types::Mouse 'Int';
# type definition.
subtype PositiveInt,
as Int,
where { $_ > 0 },
message { "Int is not larger than 0" };
subtype NegativeInt,
as Int,
where { $_ < 0 },
message { "Int is not smaller than 0" };
# type coercion
coerce PositiveInt,
from Int,
via { 1 };
1;
Usage package Foo;
use Mouse;
use MyLibrary qw( PositiveInt NegativeInt );
# use the exported constants as type names
has 'bar',
isa => PositiveInt,
is => 'rw';
has 'baz',
isa => NegativeInt,
is => 'rw';
sub quux {
my ($self, $value);
# test the value
print "positive\n" if is_PositiveInt($value);
print "negative\n" if is_NegativeInt($value);
# coerce the value, NegativeInt doesn't have a coercion
# helper, since it didn't define any coercions.
$value = to_PositiveInt($value) or die "Cannot coerce";
}
1;
AUTHORSKazuhiro Osawa <yappo <at> shibuya <döt> pl> Shawn M Moore tokuhirom Goro Fuji with plenty of code borrowed from MooseX::Types REPOSITORYgit clone git://github.com/yappo/p5-mousex-types.git MouseX-Types SEE ALSOMouse MooseX::Types COPYRIGHT AND LICENSECopyright (c) 2008-2010, Kazuhiro Osawa and partly based on MooseX::Types, which is (c) Robert Sedlacek. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|