| File: | lib/WWW/Google/Contacts/InternalTypes.pm |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package WWW::Google::Contacts::InternalTypes; | ||||||
| 2 | |||||||
| 3 | 12 | 135 | use MooseX::Types -declare => | ||||
| 4 | [ qw( | ||||||
| 5 | XmlBool | ||||||
| 6 | Rel | ||||||
| 7 | When | ||||||
| 8 | Method | ||||||
| 9 | 12 12 | 99 38 | ) ]; | ||||
| 10 | |||||||
| 11 | 12 12 12 | 126 38 102 | use MooseX::Types::Moose qw(Str Bool HashRef CodeRef Any); | ||||
| 12 | |||||||
| 13 | subtype Method, | ||||||
| 14 | as CodeRef; | ||||||
| 15 | |||||||
| 16 | coerce Method, | ||||||
| 17 | from Any, | ||||||
| 18 | via { sub { return $_ } }; | ||||||
| 19 | |||||||
| 20 | class_type Rel, | ||||||
| 21 | { class => 'WWW::Google::Contacts::Type::Rel' }; | ||||||
| 22 | |||||||
| 23 | coerce Rel, | ||||||
| 24 | from Str, | ||||||
| 25 | via { | ||||||
| 26 | require WWW::Google::Contacts::Type::Rel; | ||||||
| 27 | WWW::Google::Contacts::Type::Rel->new( | ||||||
| 28 | ($_ =~ m{^http}) | ||||||
| 29 | ? ( uri => $_ ) | ||||||
| 30 | : ( name => $_ ), | ||||||
| 31 | ); | ||||||
| 32 | }; | ||||||
| 33 | |||||||
| 34 | subtype XmlBool, | ||||||
| 35 | as Bool; | ||||||
| 36 | |||||||
| 37 | coerce XmlBool, | ||||||
| 38 | from Str, | ||||||
| 39 | via { | ||||||
| 40 | return 1 if ( $_ =~ m{^true$}i ); | ||||||
| 41 | return 0; | ||||||
| 42 | }; | ||||||
| 43 | |||||||
| 44 | class_type When, | ||||||
| 45 | { class => 'WWW::Google::Contacts::Type::When' }; | ||||||
| 46 | |||||||
| 47 | coerce When, | ||||||
| 48 | from Str, | ||||||
| 49 | via { | ||||||
| 50 | require WWW::Google::Contacts::Type::When; | ||||||
| 51 | WWW::Google::Contacts::Type::When->new( start_time => $_ ); | ||||||
| 52 | }, | ||||||
| 53 | from HashRef, | ||||||
| 54 | via { | ||||||
| 55 | return undef unless defined $_->{ startTime }; | ||||||
| 56 | require WWW::Google::Contacts::Type::When; | ||||||
| 57 | WWW::Google::Contacts::Type::When->new( | ||||||
| 58 | start_time => $_->{ startTime }, | ||||||
| 59 | defined $_->{ endTime } ? ( end_time => $_->{ endTime } ) : (), | ||||||
| 60 | ); | ||||||
| 61 | }; | ||||||