Acme-Nogizaka46
view release on metacpan or search on metacpan
lib/Acme/Nogizaka46.pm view on Meta::CPAN
use Carp qw(croak);
use DateTime;
our $VERSION = '0.3';
my @members = qw(
AkimotoManatsu
AndoMikumo
IkutaErika
IkomaRina
IchikiRena
ItoNene
ItoMarika
InoueSayuri
IwaseYumiko
EtoMisa
KashiwaYukina
KawagoHina
KawamuraMahiro
SaitoAsuka
SaitoChiharu
SaitoYuri
SakuraiReika
ShiraishiMai
TakayamaKazumi
NakadaKana
NakamotoHimeka
NagashimaSeira
NishinoNanase
NojoAmi
HashimotoNanami
HatanakaSeira
HiguchiHina
FukagawaMai
HoshinoMinami
MatsumuraSayuri
MiyazawaSeira
YamatoRina
YamamotoHonoka
YoshimotoAyaka
WakatsukiYumi
WadaMaaya
ItoKarin
ItoJunna
KitanoHinako
SagaraIori
SasakiKotoko
ShinuchiMai
SuzukiAyane
TeradaRanze
NishikawaNanami
HoriMiona
YadaRisako
YamazakiRena
YonetokuKyoka
WatanabeMiria
MatsuiRena
);
my %date_joined = map {
my ($class, $year, $month, $day) = ($_ =~ /(\w+):(\d{4})-(\d{2})-(\d{2})/);
$class => DateTime->new(
year => $year,
month => $month,
day => $day,
);
} qw(
1:2011-08-21
2:2013-05-11
MatsuiRena:2014-02-24
);
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 {
return sort {$a->$type <=> $b->$type} @members;
}
}
sub select {
my ($self, $type, $num_or_str, $operator, @members) = @_;
$self->_die('invalid operator was passed in')
unless grep {$operator eq $_} qw(== >= <= > < eq ne);
( run in 1.007 second using v1.01-cache-2.11-cpan-302cb4679cc )