Acme-MorningMusume

 view release on metacpan or  search on metacpan

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

package Acme::MorningMusume;

use strict;
use warnings;

use Carp  qw(croak);
use DateTime;

our $VERSION = '0.20';

my @members = qw(
    FukudaAsuka
    NakazawaYuko
    IidaKaori
    AbeNatsumi
    IshiguroAya
    IchiiSayaka
    YaguchiMari
    YasudaKei
    GotohMaki
    IshikawaRika
    YoshizawaHitomi
    TsujiNozomi
    KagoAi
    TakahashiAi
    KonnoAsami
    OgawaMakoto
    NiigakiRisa
    KameiEri
    TanakaReina
    MichishigeSayumi
    FujimotoMiki
    KusumiKoharu
    MitsuiAika
    LiChun
    QianLin
    SuzukiKanon
    IkutaErina
    FukumuraMizuki
    SayashiRiho
    IikuboHaruna
    IshidaAyumi
    SatohMasaki
    KudohHaruka
    OdaSakura
    OgataHaruna
    NonakaMiki
    MakinoMaria
    HagaAkane
);

my @date_joined = map {
    my ($year, $month, $day) = ($_ =~ /(\d{4})-(\d{2})-(\d{2})/);
    DateTime->new(
        year  => $year,
        month => $month,
        day   => $day,
    );
} qw(
    1997-09-07
    1998-05-03
    1999-08-04
    2000-04-16
    2001-08-26
    2003-01-19
    2005-05-01
    2006-12-10
    2011-01-02
    2011-09-29
    2012-09-14
    2014-09-30
);
unshift @date_joined, undef;

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

    $self->_initialize;

    return $self;
}

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

    return @members unless $type;

    if ($type eq 'active') {
        return grep {!$_->graduate_date} @members;
    }
    elsif ($type eq 'graduate') {
        return grep {$_->graduate_date}  @members;
    }
    elsif ($type->isa('DateTime')) {
        return grep {
            $date_joined[$_->class] <= $type and
            (!$_->graduate_date or $type <= $_->graduate_date)
        } @members;
    }
}

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

    # order by desc if $order is true
    if ($order) {
        return sort {$b->$type <=> $a->$type} @members;
    }
    else {



( run in 1.952 second using v1.01-cache-2.11-cpan-140bd7fdf52 )