| File: | lib/WWW/Google/Contacts/Type/Name.pm |
| Coverage: | 95.7% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package WWW::Google::Contacts::Type::Name; | ||||||
| 2 | |||||||
| 3 | 12 12 12 | 96 41 100 | use Moose; | ||||
| 4 | 12 12 12 | 140 35 111 | use MooseX::Types::Moose qw( Str ); | ||||
| 5 | 12 12 12 | 135 39 129 | use WWW::Google::Contacts::Meta::Attribute::Trait::XmlField; | ||||
| 6 | |||||||
| 7 | extends 'WWW::Google::Contacts::Type::Base'; | ||||||
| 8 | |||||||
| 9 | has given_name => ( | ||||||
| 10 | isa => Str, | ||||||
| 11 | is => 'rw', | ||||||
| 12 | traits => [ 'XmlField' ], | ||||||
| 13 | xml_key => 'gd:givenName', | ||||||
| 14 | predicate => 'has_given_name', | ||||||
| 15 | is_element => 1, | ||||||
| 16 | ); | ||||||
| 17 | |||||||
| 18 | has additional_name => ( | ||||||
| 19 | isa => Str, | ||||||
| 20 | is => 'rw', | ||||||
| 21 | traits => [ 'XmlField' ], | ||||||
| 22 | xml_key => 'gd:additionalName', | ||||||
| 23 | predicate => 'has_additional_name', | ||||||
| 24 | is_element => 1, | ||||||
| 25 | ); | ||||||
| 26 | |||||||
| 27 | has family_name => ( | ||||||
| 28 | isa => Str, | ||||||
| 29 | is => 'rw', | ||||||
| 30 | traits => [ 'XmlField' ], | ||||||
| 31 | xml_key => 'gd:familyName', | ||||||
| 32 | predicate => 'has_family_name', | ||||||
| 33 | is_element => 1, | ||||||
| 34 | ); | ||||||
| 35 | |||||||
| 36 | has name_prefix => ( | ||||||
| 37 | isa => Str, | ||||||
| 38 | is => 'rw', | ||||||
| 39 | traits => [ 'XmlField' ], | ||||||
| 40 | xml_key => 'gd:namePrefix', | ||||||
| 41 | predicate => 'has_name_prefix', | ||||||
| 42 | is_element => 1, | ||||||
| 43 | ); | ||||||
| 44 | |||||||
| 45 | has name_suffix => ( | ||||||
| 46 | isa => Str, | ||||||
| 47 | is => 'rw', | ||||||
| 48 | traits => [ 'XmlField' ], | ||||||
| 49 | xml_key => 'gd:nameSuffix', | ||||||
| 50 | predicate => 'has_name_suffix', | ||||||
| 51 | is_element => 1, | ||||||
| 52 | ); | ||||||
| 53 | |||||||
| 54 | has full_name => ( | ||||||
| 55 | isa => Str, | ||||||
| 56 | is => 'rw', | ||||||
| 57 | traits => [ 'XmlField' ], | ||||||
| 58 | xml_key => 'gd:fullName', | ||||||
| 59 | predicate => 'has_full_name', | ||||||
| 60 | trigger => \&_full_name_set, | ||||||
| 61 | is_element => 1, | ||||||
| 62 | ); | ||||||
| 63 | |||||||
| 64 | sub _full_name_set { | ||||||
| 65 | 2 | 12 | my ($self, $full_name) = @_; | ||||
| 66 | # Try to be clever.. | ||||||
| 67 | 2 | 24 | if ( $full_name =~ m{^([\w\-]+)\s+([\w\-]+)$} ) { | ||||
| 68 | 2 | 17 | $self->given_name( $1 ); | ||||
| 69 | 2 | 102 | $self->family_name( $2 ); | ||||
| 70 | } | ||||||
| 71 | } | ||||||
| 72 | |||||||
| 73 | 12 12 12 | 129 44 113 | no Moose; | ||||
| 74 | __PACKAGE__->meta->make_immutable; | ||||||
| 75 | 1; | ||||||