fixed conflicts after merging
[gitmo/MooseX-Types.git] / t / lib / DecoratorLibrary.pm
1 package DecoratorLibrary;
2
3 use MooseX::Types::Moose qw( Str ArrayRef HashRef Int );
4 use MooseX::Types
5     -declare => [qw(
6         MyArrayRefBase
7         MyArrayRefInt01
8         MyArrayRefInt02
9         MyHashRefOfInts
10         MyHashRefOfStr
11         StrOrArrayRef
12         AtLeastOneInt
13         Jobs
14         SubOfMyArrayRefInt01
15         BiggerInt
16     )];
17
18 subtype MyArrayRefBase,
19     as ArrayRef;
20     
21 coerce MyArrayRefBase,
22     from Str,
23     via {[split(',', $_)]};
24     
25 subtype MyArrayRefInt01,
26     as ArrayRef[Int];
27
28 subtype BiggerInt,
29     as Int,
30     where {$_>10};
31     
32 subtype SubOfMyArrayRefInt01,
33     as MyArrayRefInt01[BiggerInt];
34
35 coerce MyArrayRefInt01,
36     from Str,
37     via {[split('\.',$_)]},
38     from HashRef,
39     via {[sort values(%$_)]};
40     
41 subtype MyArrayRefInt02,
42     as MyArrayRefBase[Int];
43     
44 subtype MyHashRefOfInts,
45     as HashRef[Int];
46     
47 subtype MyHashRefOfStr,
48     as HashRef[Str];
49
50 coerce MyArrayRefInt02,
51     from Str,
52     via {[split(':',$_)]},
53     from MyHashRefOfInts,
54     via {[sort values(%$_)]},
55     from MyHashRefOfStr,
56     via {[ sort map { length $_ } values(%$_) ]},
57     from HashRef[ArrayRef],
58     via {[ sort map { @$_ } values(%$_) ]};
59
60 subtype StrOrArrayRef,
61     as Str|ArrayRef;
62
63 subtype AtLeastOneInt,
64     as ArrayRef[Int],
65     where { @$_ > 0 };
66     
67 enum Jobs,
68     (qw/Programming Teaching Banking/);
69     
70 1;