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 )