Acme-Keyakizaka46

 view release on metacpan or  search on metacpan

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

package Acme::Keyakizaka46;

use strict;
use warnings;

use Carp  qw(croak);
use DateTime;

our $VERSION = '0.0.1';

my @members = qw(
    NijikaIshimori
    YuiImaizumi
    RinaUemura
    RikaOzeki
    NanaOda
    MinamiKoike
    YuiKobayashi
    FuyukaSaito
    ShioriSato
    ManakaShida
    YuukaSugai
    MiyuSuzumoto
    NanakoNagasawa
    MizuhoHabu
    AoiHarada
    YurinaHirate
    AkaneMoriya
    NanamiYonetani
    RikaWatanabe
    RisaWatanabe
    NeruNagahama
    MaoIguchi
    SarinaUshio
    MemiKakizaki
    YukaKageyama
    ShihoKato
    KyokoSaito
    KumiSasaki
    MireiSasaki
    ManaTakase
    AyakaTakamoto
    MeiHigashimura
    MikuKanemura
    HinaKawata
    NaoKosaka
    SuzukaTomita
    AkariNibu
    HiyoriHamagishi
    KonokaMatsuda
    ManamoMiyata
    MihoWatanabe
);

sub new {
    my $class = shift;
    my $self  = bless {members => []}, $class;

    $self->_initialize;

    return $self;
}

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

    $type = $type ? $type : '';

    if ($type eq 'kanji') {
        return grep {$_->team eq 'kanji'} @members;
    }
    elsif ($type eq 'hiragana') {
        return grep {$_->team eq 'hiragana'} @members;
    }

    return @members;
}

sub sort {
    my ($self, $type, $order, @members) = @_;
    @members = $self->team_members() unless @members;

    if ($order eq 'desc') {
        return sort {$b->$type <=> $a->$type} @members;
    } else {
        return sort {$a->$type <=> $b->$type} @members;
    }
}

sub select {
    my ($self, $type, $num_or_str, $operator, @members) = @_;

    @members = $self->team_members() unless @members;

    if ($type eq 'center') {
        $self->_die('too many args...')
            if ($num_or_str || $operator);

        return grep {$_->{name_en} eq 'Yurina Hirate'} @members;
    }
    else {
        $self->_die('invalid operator was passed in')
            unless grep {$operator eq $_} qw(== >= <= > < eq ne);

        my $compare = eval "(sub { \$num_or_str $operator \$_[0] })";

        return grep { $compare->($_->$type) } @members;
    }

}

sub _initialize {
    my $self = shift;

    for my $member (@members) {
        my $module_name = 'Acme::Keyakizaka46::'.$member;



( run in 1.374 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )