File Coverage

blib/lib/Acme/2zicon/Base.pm
Criterion Covered Total %
statement 35 37 94.5
branch 2 4 50.0
condition n/a
subroutine 9 9 100.0
pod 1 1 100.0
total 47 51 92.1


line stmt bran cond sub pod time code
1             package Acme::2zicon::Base;
2              
3 2     2   12 use strict;
  2         3  
  2         47  
4 2     2   10 use warnings;
  2         4  
  2         46  
5 2     2   10 use DateTime;
  2         2  
  2         54  
6 2     2   10 use base qw(Class::Accessor);
  2         3  
  2         1671  
7              
8             our $VERSION = '0.6';
9              
10             __PACKAGE__->mk_accessors(qw(
11             name_ja
12             first_name_ja
13             family_name_ja
14             name_en
15             first_name_en
16             family_name_en
17             nick
18             birthday
19             age
20             blood_type
21             hometown
22             introduction
23             twitter
24             ));
25              
26             sub new {
27 20     20 1 33 my $class = shift;
28 20         43 my $self = bless {}, $class;
29              
30 20         89 $self->_initialize;
31              
32 20         81 return $self;
33             }
34              
35             sub _initialize {
36 20     20   30 my $self = shift;
37 20         92 my %info = $self->info;
38              
39 20         4824 $self->{$_} = $info{$_} for keys %info;
40 20         126 $self->{name_ja} = $self->family_name_ja.$self->first_name_ja;
41 20         505 $self->{name_en} = $self->first_name_en.' '.$self->family_name_en;
42 20         394 $self->{age} = $self->_calculate_age;
43 20         433 $self->{introduction} = $self->_introduction($info{introduction});
44              
45 20         60 return 1;
46             }
47              
48             sub _calculate_age {
49 20     20   30 my $self = shift;
50 20         57 my $today = DateTime->today;
51              
52 20 50       8480 if (($today->month - $self->birthday->month) >= 0) {
53 20 50       403 if (($today->day - $self->birthday->day ) >= 0) {
54 20         311 return $today->year - $self->birthday->year;
55             } else {
56 0         0 return ($today->year - $self->birthday->year) - 1;
57             }
58             } else {
59 0         0 return ($today->year - $self->birthday->year) - 1;
60             }
61             }
62              
63             sub _datetime_from_date {
64 20     20   37 my ($self, $date) = @_;
65 20         119 my ($year, $month, $day) = ($date =~ /(\d{4})\.(\d{2})\.(\d{2})/);
66              
67 20         122 DateTime->new(
68             year => $year,
69             month => $month,
70             day => $day,
71             );
72             }
73              
74             sub _introduction {
75 20     20   37 my ($self, $introduction) = @_;
76 20         212 $introduction =~ s/\[(\w+)\]/$self->{$1}/g;
77 20         60 return $introduction;
78             }
79              
80             1;
81              
82             __END__