1 package DecoratorLibrary;
3 use MooseX::Types::Moose qw( Str ArrayRef HashRef Int );
16 ## Some questionable messing around
18 my ($subtype, $basetype, @rest) = @_;
19 return subtype($subtype, $basetype, shift @rest, shift @rest);
31 subtype MyArrayRefBase,
34 coerce MyArrayRefBase,
36 via {[split(',', $_)]};
38 subtype MyArrayRefInt01,
41 coerce MyArrayRefInt01,
43 via {[split('\.',$_)]},
45 via {[sort values(%$_)]};
47 subtype MyArrayRefInt02,
48 as MyArrayRefBase[Int];
50 subtype MyHashRefOfInts,
53 subtype MyHashRefOfStr,
56 coerce MyArrayRefInt02,
58 via {[split(':',$_)]},
60 via {[sort values(%$_)]},
62 via {[ sort map { length $_ } values(%$_) ]},
63 from HashRef[ArrayRef],
64 via {[ sort map { @$_ } values(%$_) ]};
66 subtype StrOrArrayRef,
69 subtype AtLeastOneInt,
74 (qw/Programming Teaching Banking/);