Acme-Speed

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

         "requires" : {
            "Test::CPAN::Meta" : "0",
            "Test::MinimumVersion" : "0.10108",
            "Test::Pod" : "1.41",
            "Test::Spellunker" : "v0.2.7"
         }
      },
      "runtime" : {
         "requires" : {
            "Class::Accessor" : "0",
            "DateTime" : "0"
         }
      },
      "test" : {
         "requires" : {
            "Test::More" : "0.98"
         }
      }
   },
   "provides" : {
      "Acme::Speed" : {

META.yml  view on Meta::CPAN

    file: lib/Acme/Speed/Member/ImaiEriko.pm
    version: 0
  Acme::Speed::Member::ShimabukuroHiroko:
    file: lib/Acme/Speed/Member/ShimabukuroHiroko.pm
    version: 0
  Acme::Speed::Member::UeharaTakako:
    file: lib/Acme/Speed/Member/UeharaTakako.pm
    version: 0
requires:
  Class::Accessor: 0
  DateTime: 0
resources:
  bugtracker: https://github.com/kitak/p5-Acme-Speed/issues
  homepage: https://github.com/kitak/p5-Acme-Speed
  repository: https://github.com/kitak/p5-Acme-Speed.git
version: 0.01
x_contributors:
  - 'Keisuke KITA <kei.kita2501@gmail.com>'

cpanfile  view on Meta::CPAN

requires 'Class::Accessor';
requires 'DateTime';

on 'test' => sub {
    requires 'Test::More', '0.98';
};

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

lib/Acme/Speed/Member/Base.pm  view on Meta::CPAN

    $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__

lib/Acme/Speed/Member/Base.pm  view on Meta::CPAN

  my @members = $speed->members;

  for my $member (@members) {
      my $name_ja        = $member->name_ja;
      my $first_name_ja  = $member->first_name_ja;
      my $family_name_ja = $member->family_name_ja;
      my $name_en        = $member->name_en;
      my $first_name_en  = $member->first_name_en;
      my $family_name_en = $member->family_name_en;
      my $nick           = $member->nick;
      my $birthday       = $member->birthday;       # DateTime object
      my $age            = $member->age;
  }

=head1 DESCRIPTION

Acme::Speed::Member::Base is a base class of the class represents each member of SPEED.

=head1 ACCESSORS

=head2 name_ja       

t/01_members.t  view on Meta::CPAN

use strict;
use DateTime;
use Acme::Speed;
use Test::More tests => 1;

my $speed = Acme::Speed->new;

is scalar($speed->members), 4, " members"



( run in 0.393 second using v1.01-cache-2.11-cpan-05444aca049 )