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

=head1 NAME

Acme::BABYMETAL - All about Japanese metal idol unit "BABYMETAL"

=head1 SYNOPSIS

  use Acme::BABYMETAL;

  my $babymetal = Acme::BABYMETAL->new;

  $babymetal->homepage;
  $babymetal->youtube;
  $babymetal->facebook;
  $babymetal->instagram;
  $babymetal->twitter;

  my @members = $babymetal->members;
  for my $member (@members) {
      my $metal_name     = $member->metal_name;
      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 $birthday       = $member->birthday;
      my $age            = $member->age;
      my $blood_type     = $member->blood_type;
      my $hometown       = $member->hometown;
      my $shout          = $member->shout;
  }

  my ($su_metal) = $babymetal->members('SU-METAL');
  my ($yuimetal) = $babymetal->members('YUIMETAL');
  my ($moametal) = $babymetal->members('MOAMETAL');

  $su_metal->shout;  # SU-METAL DEATH!!
  $yuimetal->shout;  # YUIMETAL DEATH!!
  $moametal->shout;  # MOAMETAL DEATH!!
  $babymetal->shout; # We are BABYMETAL DEATH!!


=head1 DESCRIPTION

BABYMETAL is a Japanese metal idol unit.

Acme::BABYMETAL provides an easy method to information of BABYMETAL.

=head1 LICENSE

Copyright (C) Hondallica.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR

Hondallica E<lt>hondallica@gmail.comE<gt>

=cut