Acme-2zicon
view release on metacpan - search on metacpan
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) {
my $module_name = 'Acme::2zicon::'.$member;
eval qq|require $module_name;|;
push @{$self->{members}}, $module_name->new;
}
return 1;
}
sub _die {
my ($self, $message) = @_;
Carp::croak($message);
}
1;
__END__
=encoding utf-8
=head1 NAME
Acme::2zicon - It's new $module
=head1 SYNOPSIS
use Acme::2zicon;
my $nizicon = Acme::2zicon->new;
# retrieve the members on their activities
my @members = $nizicon->members;
# retrieve the members under some conditions
my @sorted_by_age = $nizicon->sort('age', 1);
my @selected_by_age = $nizicon->select('age', 16, '>=');
=head1 DESCRIPTION
=head1 METHODS
=head2 new
my $nizicon = Acme::2zicon->new;
Creates and returns a new Acme::2zicon object.
=head2 members
my @members = $nizicon->members();
=head2 sort ( $type, $order \[ , @members \] )
my @sorted_members = $nizicon->sort('age', 1);
=head2 select ( $type, $number, $operator \[, @members\] )
# $type can be one of the same values above:
my @selected_members = $nizicon->select('age', 16, '>=');
$number $operator $member_value
=head1 LICENSE
MIT License
=head1 AUTHOR
catatsuy E<lt>catatsuy@catatsuy.orgE<gt>
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.220 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )