Commit | Line | Data |
20b6a7d1 |
1 | package DecoratorLibrary; |
2 | |
3 | use warnings; |
4 | use strict; |
5 | |
6 | use MooseX::Types::Moose qw( Str ArrayRef HashRef Int ); |
7 | use MooseX::Types |
8 | -declare => [qw( |
9 | MyArrayRefBase |
10 | MyArrayRefInt01 |
11 | MyArrayRefInt02 |
12 | )]; |
13 | |
14 | subtype MyArrayRefBase, |
15 | as ArrayRef; |
16 | |
17 | coerce MyArrayRefBase, |
18 | from Str, |
19 | via {[split(',', $_)]}; |
20 | |
21 | subtype MyArrayRefInt01, |
22 | as ArrayRef[Int]; |
23 | |
24 | coerce MyArrayRefInt01, |
25 | from Str, |
26 | via {[split('\.',$_)]}, |
27 | from HashRef, |
54f5d4e6 |
28 | via {[sort values(%$_)]}; |
20b6a7d1 |
29 | |
30 | subtype MyArrayRefInt02, |
31 | as MyArrayRefBase[Int]; |
32 | |
33 | coerce MyArrayRefInt02, |
34 | from Str, |
35 | via {[split(':',$_)]}; |
36 | from HashRef[Int], |
37 | via {[values(%$_)]}, |
38 | from HashRef[Str], |
39 | via {[ map { length $_ } values(%_) ]}; |
40 | 1; |