Acme-BABYMETAL

 view release on metacpan or  search on metacpan

cpanfile  view on Meta::CPAN

requires 'perl', '5.008001';
requires 'Class::Accessor';
requires 'DateTime';

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

lib/Acme/BABYMETAL.pm  view on Meta::CPAN

package Acme::BABYMETAL;
use 5.008001;
use strict;
use warnings;

our $VERSION = "0.03";

my @members = qw(SU-METAL YUIMETAL MOAMETAL);

sub new {
    my $class = shift;
    my $self  = bless {members => []}, $class;
    for my $member (@members) {
        $member =~ s|-|_|;
        my $module_name = 'Acme::BABYMETAL::' . $member;
        eval qq|require $module_name;|;
        push @{$self->{members}}, $module_name->new;
    }
    return $self;
}

sub homepage {
    my ($self) = @_;
    return 'http://www.babymetal.jp/';
}

sub youtube {
    my ($self) = @_;
    return 'https://www.youtube.com/BABYMETAL';
}

sub facebook {
    my ($self) = @_;
    return 'https://www.facebook.com/BABYMETAL.jp/';
}

sub instagram {
    my ($self) = @_;
    return 'https://www.instagram.com/babymetal_official/';
}

sub twitter {
    my ($self) = @_;
    return 'https://twitter.com/BABYMETAL_JAPAN';
}

sub members {
    my ($self, $member) = @_;
    return @{$self->{members}} unless $member;

    if ( $member =~ /^S/i ) {
        @members = $self->{members}[0];
    } elsif ( $member =~ /^Y/i ) {
        @members = $self->{members}[1];
    } elsif ( $member =~ /^M/i ) {
        @members = $self->{members}[2];
    } else {
        @members = @{$self->{members}};
    }
    return @members;
}

sub shout {
    my ($self) = @_;
    print "We are BABYMETAL DEATH!!\n";  
}


1;
__END__

=encoding utf-8

lib/Acme/BABYMETAL/Base.pm  view on Meta::CPAN

    family_name_ja
    name_en
    first_name_en
    family_name_en
    birthday
    age
    blood_type
    hometown
));

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;
    my ($year, $month, $day) = ($self->{birthday} =~ /^(\d{4})-(\d{2})-(\d{2})$/);
    $self->{age} = (DateTime->now - DateTime->new(
        year => $year,
        month => $month,
        day => $day,
    ))->years;

    return 1;
}

sub shout {
    my $self = shift;
    print $self->metal_name . " DEATH!!\n";
}


1;

lib/Acme/BABYMETAL/MOAMETAL.pm  view on Meta::CPAN

package Acme::BABYMETAL::MOAMETAL;
use strict;
use warnings;
use base qw(Acme::BABYMETAL::Base);

our $VERSION = '0.03';

sub info {
    return (
        metal_name     => 'MOAMETAL',
        first_name_ja  => '最愛',
        family_name_ja => '菊地',
        first_name_en  => 'Moa',
        family_name_en => 'Kikuchi',
        birthday       => '1999-07-04',
        blood_type     => 'A',
        hometown       => '愛知県',
    );

lib/Acme/BABYMETAL/SU_METAL.pm  view on Meta::CPAN

package Acme::BABYMETAL::SU_METAL;
use strict;
use warnings;
use base qw(Acme::BABYMETAL::Base);

our $VERSION = '0.03';

sub info {
    return (
        metal_name     => 'SU-METAL',
        first_name_ja  => 'すず香',
        family_name_ja => '中元',
        first_name_en  => 'Suzuka',
        family_name_en => 'Nakamoto',
        birthday       => '1997-12-20',
        blood_type     => 'B',
        hometown       => '広島県',
    );

lib/Acme/BABYMETAL/YUIMETAL.pm  view on Meta::CPAN

package Acme::BABYMETAL::YUIMETAL;
use strict;
use warnings;
use base qw(Acme::BABYMETAL::Base);

our $VERSION = '0.03';

sub info {
    return (
        metal_name     => 'YUIMETAL',
        first_name_ja  => '由結',
        family_name_ja => '水野',
        first_name_en  => 'Yui',
        family_name_en => 'Mizuno',
        birthday       => '1999-06-20',
        blood_type     => 'O',
        hometown       => '神奈川県',
    );



( run in 0.319 second using v1.01-cache-2.11-cpan-4d50c553e7e )