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; |