Acme-2zicon

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

## 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()';
}



( run in 0.767 second using v1.01-cache-2.11-cpan-df04353d9ac )