1MouseX::Types(3)      User Contributed Perl Documentation     MouseX::Types(3)
2
3
4

NAME

6       MouseX::Types - Organize your Mouse types in libraries
7

SYNOPSIS

9   Library Definition
10         package MyLibrary;
11
12         # predeclare our own types
13         use MouseX::Types
14           -declare => [qw(
15               PositiveInt NegativeInt
16           )];
17
18         # import builtin types
19         use MouseX::Types::Mouse 'Int';
20
21         # type definition.
22         subtype PositiveInt,
23             as Int,
24             where { $_ > 0 },
25             message { "Int is not larger than 0" };
26
27         subtype NegativeInt,
28             as Int,
29             where { $_ < 0 },
30             message { "Int is not smaller than 0" };
31
32         # type coercion
33         coerce PositiveInt,
34             from Int,
35                 via { 1 };
36
37         1;
38
39   Usage
40         package Foo;
41         use Mouse;
42         use MyLibrary qw( PositiveInt NegativeInt );
43
44         # use the exported constants as type names
45         has 'bar',
46             isa    => PositiveInt,
47             is     => 'rw';
48         has 'baz',
49             isa    => NegativeInt,
50             is     => 'rw';
51
52         sub quux {
53             my ($self, $value);
54
55             # test the value
56             print "positive\n" if is_PositiveInt($value);
57             print "negative\n" if is_NegativeInt($value);
58
59             # coerce the value, NegativeInt doesn't have a coercion
60             # helper, since it didn't define any coercions.
61             $value = to_PositiveInt($value) or die "Cannot coerce";
62         }
63
64         1;
65

AUTHORS

67       Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
68
69       Shawn M Moore
70
71       tokuhirom
72
73       Goro Fuji
74
75       with plenty of code borrowed from MooseX::Types
76

REPOSITORY

78         git clone git://github.com/yappo/p5-mousex-types.git MouseX-Types
79

SEE ALSO

81       Mouse
82
83       MooseX::Types
84
86       Copyright (c) 2008-2010, Kazuhiro Osawa and partly based on
87       MooseX::Types, which is (c) Robert Sedlacek.
88
89       This library is free software; you can redistribute it and/or modify it
90       under the same terms as Perl itself.
91
92
93
94perl v5.36.0                      2022-07-22                  MouseX::Types(3)
Impressum