view release on metacpan or search on metacpan
## new
my $nizicon = Acme::2zicon->new;
Creates and returns a new Acme::2zicon object.
## members
my @members = $nizicon->members();
## sort ( $type, $order \\\[ , @members \\\] )
my @sorted_members = $nizicon->sort('age', 1);
## 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
# LICENSE
MIT License
# AUTHOR
lib/Acme/2zicon.pm view on Meta::CPAN
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;
lib/Acme/2zicon.pm view on Meta::CPAN
=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
lib/Acme/2zicon/Base.pm view on Meta::CPAN
__PACKAGE__->mk_accessors(qw(
name_ja
first_name_ja
family_name_ja
name_en
first_name_en
family_name_en
nick
birthday
age
blood_type
hometown
introduction
twitter
));
sub new {
my $class = shift;
my $self = bless {}, $class;
$self->_initialize;
lib/Acme/2zicon/Base.pm view on Meta::CPAN
for my $member (@members) {
my $name_ja = $member->name_ja;
my $first_name_ja = $member->first_name_ja;
my $family_name_ja = $member->family_name_ja;
my $name_en = $member->name_en;
my $first_name_en = $member->first_name_en;
my $family_name_en = $member->family_name_en;
my $nick = $member->nick; # arrayref
my $birthday = $member->birthday; # DateTime object
my $age = $member->age;
my $blood_type = $member->blood_type;
my $hometown = $member->hometown;
my $twitter = $member->twitter;
}
=head1 DESCRIPTION
=head1 ACCESSORS
=head2 name_ja
lib/Acme/2zicon/Base.pm view on Meta::CPAN
=head2 first_name_en
=head2 family_name_en
=head2 nick
=head2 birthday
=head2 age
=head2 blood_type
=head2 hometown
=head2 twitter
=head1 SEE ALSO
=over 4
=item * L<DateTime>
lib/Acme/2zicon/MatobaKarin.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'è¯é´',
family_name_ja => 'çå ´',
first_name_en => 'Karin',
family_name_en => 'Matoba',
nick => [qw(ããã ããããã¾)],
birthday => $self->_datetime_from_date('2000.12.30'),
blood_type => 'A',
hometown => 'å¼çç',
introduction => "[hometown]ãããã£ã¦ããæå¹´å°ã®[age]æ³ãããããã¾ã£ã¦ããã§ããããã\nï¼¼ããããã¾ã¼ï¼ï¼\nãã³ã¹ã¨æ¢
å¹²ãã大好ããª[name_ja]ã§ãã",
twitter => 'matoba_karin',
);
}
1;
lib/Acme/2zicon/NakamuraAkari.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'æ±é',
family_name_ja => '䏿',
first_name_en => 'Akari',
family_name_en => 'Nakamura',
nick => [qw(ãããã)],
birthday => $self->_datetime_from_date('1998.01.30'),
blood_type => 'B',
hometown => 'åèç',
introduction => "ï¼¼ãããããã¼ããããããã¼ãï¼\nã¿ã¼ããªã®ç¬é¡ã®é£ã«ãããã\n[hometown]åºèº«ã®[age]æ³ã\nãããããã¨[name_ja]ã§ãã",
twitter => 'nakamura_akari',
);
}
1;
lib/Acme/2zicon/NemotoNagi.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'åª',
family_name_ja => 'æ ¹æ¬',
first_name_en => 'Nagi',
family_name_en => 'Nemoto',
nick => [qw(ãã)],
birthday => $self->_datetime_from_date('1999.03.15'),
blood_type => 'B',
hometown => 'è¨åç',
introduction => "ã¿ããªã®ãã¼ããããè²ã«æãã¡ãã£ã¦ãããã£ãºãï¼\nï¼¼ãºã¼ï¼ï¼\n[hometown]åºèº«ä¸éç¥ããã®[age]æ³ã\nãããã¨[name_ja]ã§ãã",
twitter => 'nemoto_nagi',
);
}
1;
lib/Acme/2zicon/OkumuraNonoka.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'éä¹è±',
family_name_ja => '奥æ',
first_name_en => 'Nonoka',
family_name_en => 'Okumura',
nick => [qw(ã®ã®ã)],
birthday => $self->_datetime_from_date('2001.01.04'),
blood_type => 'O',
hometown => 'æ±äº¬é½',
introduction => "ã¢ã¤ãã«ãªã¿ã¯ã®é²åç³»ãæ¯æ¥ãããã°ãã³ããã¼ã®ï¼\nï¼¼ã©ã¼ãï¼\n[hometown]åºèº«ã®æå¹´å°[age]æ³ã\nã®ã®ããã¨[name_ja]ã§ãã",
twitter => 'okumura_nonoka',
);
}
1;
lib/Acme/2zicon/OtsukaMiyu.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'æç±',
family_name_ja => '大å¡',
first_name_en => 'Miyu',
family_name_en => 'Otsuka',
nick => [qw(ãã¦ãã¦)],
birthday => $self->_datetime_from_date('2000.12.20'),
blood_type => 'O',
hometown => 'ãã¤ã',
introduction => "",
twitter => 'otsuka_miyu',
);
}
1;
lib/Acme/2zicon/ShigematsuYuka.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'ä½ä½³',
family_name_ja => 'éæ¾',
first_name_en => 'Yuka',
family_name_en => 'Shigematsu',
nick => [qw(ããã¡ã¼)],
birthday => $self->_datetime_from_date('1996.05.20'),
blood_type => 'B',
hometown => 'ç¦å²¡ç',
introduction => "åå¤ãããããã¤ã¤ã¢ã³ãã®åç³ãã¿ã¼ããªã®æã§è¼ããã¦ã»ããã¨ã\n[hometown]åºèº«ã®[age]æ³ã\nããã¡ã¼ãã¨[name_ja]ã§ãã",
twitter => 'shigematsu_yuka',
);
}
1;
lib/Acme/2zicon/SuyamaEmiri.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'æµå®é',
family_name_ja => 'é¶å±±',
first_name_en => 'Emiri',
family_name_en => 'Suyama',
nick => [qw(ãã¿ãã)],
birthday => $self->_datetime_from_date('1999.05.26'),
blood_type => 'O',
hometown => 'æ±äº¬é½',
introduction => "ã©ãã¾ã§ãã£ã¦ããã¤ãã¼ã¹ãªã¢ã¤ãã«ã«ã¼ãã¼ãããªãã®æ°äººçãçãã¾ãã\n[hometown]åºèº«ã®[age]æ³ã\nãã¿ãããã¨[name_ja]ã§ãã",
twitter => 'suyama_emiri',
);
}
1;
lib/Acme/2zicon/TsurumiMoe.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'è',
family_name_ja => 'é¶´è¦',
first_name_en => 'Moe',
family_name_en => 'Tsurumi',
nick => [qw(ãã)],
birthday => $self->_datetime_from_date('1996.12.05'),
blood_type => 'A',
hometown => 'æ±äº¬é½',
introduction => "ä¸çã«èããçºä¿¡ï¼\nï¼¼åä¿¡ï¼ï¼\n[hometown]åºèº«[age]æ³ã\né«ªã®æ¯ãµããµã天ç¶ã¬ã¼ã«ã\nãããã¨[name_ja]ã§ãã",
twitter => 'tsurumi_moe',
);
}
1;
lib/Acme/2zicon/YamatoAo.pm view on Meta::CPAN
sub info {
my $self = shift;
return (
first_name_ja => 'ææ¡',
family_name_ja => '大å',
first_name_en => 'Ao',
family_name_en => 'Yamato',
nick => [qw(ããã¡ãã)],
birthday => $self->_datetime_from_date('2002.05.23'),
blood_type => 'B',
hometown => 'æ±äº¬é½',
introduction => "",
twitter => 'yamato__ao',
);
}
1;
t/02_2zicon.t view on Meta::CPAN
ok $member, $member->name_en;
ok $member->name_ja, ' name_ja()';
ok $member->first_name_ja, ' first_name_ja()';
ok $member->family_name_ja, ' family_name_ja()';
ok $member->name_en, ' name_en()';
ok $member->first_name_en, ' name_en()';
ok $member->family_name_en, ' family_name_en()';
ok ref($member->nick) eq 'ARRAY', ' nick()';
ok !$member->birthday || $member->birthday->isa('DateTime'), ' birthday()';
ok $member->age, ' age()';
ok $member->blood_type, ' blood_type()';
ok $member->hometown, ' hometown()';
# ok $member->introduction, ' introduction()';
ok $member->twitter, ' twitter()';
}