Acme-2zicon

 view release on metacpan or  search on metacpan

lib/Acme/2zicon.pm  view on Meta::CPAN

package Acme::2zicon;
use 5.008001;
use strict;
use warnings;

use Carp  qw(croak);
use DateTime;

our $VERSION = "0.7";

my @members = qw(
    MatobaKarin
    NakamuraAkari
    NemotoNagi
    OkumuraNonoka
    ShigematsuYuka
    SuyamaEmiri
    TsurumiMoe
    OtsukaMiyu
    YamatoAo
);

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;
}

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, $number, $operator, @members) = @_;

    $self->_die('invalid operator was passed in')
        unless grep {$operator eq $_} qw(== >= <= > <);

    @members = $self->members unless @members;
    my $compare = eval "(sub { \$number $operator \$_[0] })";

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

sub _initialize {
    my $self = shift;

    for my $member (@members) {



( run in 0.584 second using v1.01-cache-2.11-cpan-524268b4103 )