Acme-Speed
view release on metacpan or search on metacpan
lib/Acme/Speed/Member/Base.pm view on Meta::CPAN
package Acme::Speed::Member::Base;
use strict;
use warnings;
use DateTime;
use base qw(Class::Accessor);
__PACKAGE__->mk_accessors(qw(
name_ja
first_name_ja
family_name_ja
name_en
first_name_en
family_name_en
birthday
age
));
sub new {
my $class = shift;
my $self = bless {}, $class;
$self->_initialize;
return $self;
}
sub _initialize {
my $self = shift;
my %info = $self->info;
$self->{$_} = $info{$_} for keys %info;
$self->{name_ja} = $self->family_name_ja.$self->first_name_ja;
$self->{name_en} = $self->first_name_en.' '.$self->family_name_en;
$self->{age} = $self->_calculate_age;
return 1;
}
sub _calculate_age {
my $self = shift;
my $today = DateTime->today;
if (($today->month - $self->birthday->month) >= 0) {
if (($today->day - $self->birthday->day) >= 0) {
return $today->year - $self->birthday->year;
} else {
return ($today->year - $self->birthday->year) - 1;
}
} else {
return ($today->year - $self->birthday->year) - 1;
}
}
sub _datetime_from_date {
my ($self, $date) = @_;
my ($year, $month, $day) = ($date =~ /(\d{4})-(\d{2})-(\d{2})/);
return DateTime->new(
year => $year,
month => $month,
day => $day,
);
}
1;
__END__
=head1 NAME
Acme::Speed::Member::Base - A base class of the class represents each
member of SPEED
=head1 SYNOPSIS
use Acme::Speed;
my $speed = Acme::Speed->new;
# retrieve the members as a list of
( run in 2.154 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )