Commit | Line | Data |
ceef0cf1 |
1 | package Gitalist::Git::Types; |
2 | |
3 | use MooseX::Types |
2c130350 |
4 | -declare => [qw/ |
5 | SHA1 |
6 | DateTime |
7 | Dir |
8 | /]; |
ceef0cf1 |
9 | |
2c130350 |
10 | use MooseX::Types::Path::Class; |
11 | use MooseX::Types::ISO8601 qw/ISO8601DateTimeStr/; |
12 | use MooseX::Types::DateTime (); |
13 | use MooseX::Storage::Engine (); |
ceef0cf1 |
14 | use MooseX::Types::Common::String qw/NonEmptySimpleStr/; |
15 | |
16 | subtype SHA1, |
17 | as NonEmptySimpleStr, |
18 | where { $_ =~ qr/^[0-9a-fA-F]{40}$/ }, |
19 | message { q/Str doesn't look like a SHA1./ }; |
20 | |
21 | coerce SHA1, |
22 | from NonEmptySimpleStr, |
23 | via { 1 }; |
24 | |
2c130350 |
25 | subtype DateTime, |
26 | as 'MooseX::Types::DateTime::DateTime', |
27 | where { 1 }; |
28 | |
29 | MooseX::Storage::Engine->add_custom_type_handler( |
30 | DateTime, |
31 | expand => sub { |
32 | my $val = shift; |
33 | Carp::confess("Not implemented"); |
34 | }, |
35 | collapse => sub { |
36 | to_ISO8601DateTimeStr(shift); |
37 | }, |
38 | ); |
39 | |
40 | subtype Dir, |
41 | as 'MooseX::Types::Path::Class::Dir', |
42 | where { 1 }; |
43 | |
44 | MooseX::Storage::Engine->add_custom_type_handler( |
45 | Dir, |
46 | expand => sub { |
47 | my $val = shift; |
48 | Carp::confess("Not implemented"); |
49 | }, |
50 | collapse => sub { |
51 | shift() . ''; |
52 | }, |
53 | ); |
54 | |
ceef0cf1 |
55 | 1; |