File Coverage

File:lib/WWW/Google/Contacts/Type/Name.pm
Coverage:95.7%

linestmtbrancondsubpodtimecode
1package 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
7extends 'WWW::Google::Contacts::Type::Base';
8
9has 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
18has 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
27has 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
36has 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
45has 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
54has 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
64sub _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;
751;