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