NAME
MouseX::Types - Organize your Mouse types in libraries
SYNOPSIS
Library Definition
package
MyLibrary;
# predeclare our own types
use
MouseX::Types
-declare
=> [
qw(
PositiveInt NegativeInt
)
];
# import builtin types
# 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 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
"positive\n"
if
is_PositiveInt(
$value
);
"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;
AUTHORS
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
Shawn M Moore
tokuhirom
Goro Fuji
with plenty of code borrowed from MooseX::Types
REPOSITORY
git clone git://github.com/yappo/p5-mousex-types.git MouseX-Types
SEE ALSO
COPYRIGHT AND LICENSE
Copyright (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.