Acme-MilkyHolmes
view release on metacpan or search on metacpan
# fetch members of Milky Holmes(eg/say.pl)
my ($sherlock, $nero, $elly, $cordelia) = Acme::MilkyHolmes->members();
$sherlock->say('ã£ã¦ãªãã§ã§ããã¼');
$nero->say('åã®ãã¾ãã¾æ£ã');
$elly->say('æ¥ãããã...');
$cordelia->say('ç§ã®...ãè±ç...');
# create character instance directly
my $sherlock = Acme::MilkyHolmes::Character::SherlockShellingford->new();
$sherlock->locale('en');
$sherlock->name; # => 'Sherlock Shellingford'
$sherlock->firstname; # => 'Sherlock'
$sherlock->familyname; # => 'Shellingford'
$sherlock->nickname; # => 'Sheryl'
$sherlock->birthday; # => 'March 31'
$sherlock->voiced_by; # => 'Suzuko Mimori'
$sherlock->nickname_voiced_by; # => 'mimorin'
$sherlock->toys; # => 'Psychokinesis'
$sherlock->color; # => 'pink'
my ($sherlock, $nero, $elly, $cordelia, $kazumi, $alice) = Acme::MilkyHolmes->members_of($MilkyHolmesSisters);
# DESCRIPTION
Milky Holmes is one of the most famous Japanese TV animation. Acme::MilkyHolmes provides character information of Milky Holmes.
# METHODS
## `members(%options)`
options: `$options{locale} = ja,en` default is ja
my @members = Acme::MilkyHolmes->members(locale => en);
fetch Milky Holmes members. See SYNOPSIS.
## `members_of($member_name_const, %options)`
options: `$options{locale} = ja,en` default is ja
fetch members specified in `$member_name_const`. See SYNOPSIS and EXPORTED CONSTANTS
# EXPORTED CONSTANTS
- `$MilkyHolmes` : members of Milky Holmes (Sherlock, Nero, Elly and Cordelia).
- `$MilkyHolmesFeathers` : members of Milky Holmes Feathers (Kazumi and Alice).
- `$MilkyHolmesSisters` : members of Milky Holmes Sisters (Sherlock, Nero, Elly, Cordelia, Kazumi and Alice)
# SEE ALSO
lib/Acme/MilkyHolmes.pm view on Meta::CPAN
return $class->members_of($MilkyHolmes, %options);
}
sub members_of {
my ($class, $team, %options) = @_;
my @members = ();
for my $member_name ( @{ $team } ) {
my $pkg = "Acme::MilkyHolmes::Character::$member_name";
my $member = $pkg->new();
$member->locale($options{locale}) if ( exists $options{locale} );
push @members, $member;
}
return @members;
}
1;
__END__
=encoding utf-8
lib/Acme/MilkyHolmes.pm view on Meta::CPAN
# fetch members of Milky Holmes(eg/say.pl)
my ($sherlock, $nero, $elly, $cordelia) = Acme::MilkyHolmes->members();
$sherlock->say('ã£ã¦ãªãã§ã§ããã¼');
$nero->say('åã®ãã¾ãã¾æ£ã');
$elly->say('æ¥ãããã...');
$cordelia->say('ç§ã®...ãè±ç...');
# create character instance directly
my $sherlock = Acme::MilkyHolmes::Character::SherlockShellingford->new();
$sherlock->locale('en');
$sherlock->name; # => 'Sherlock Shellingford'
$sherlock->firstname; # => 'Sherlock'
$sherlock->familyname; # => 'Shellingford'
$sherlock->nickname; # => 'Sheryl'
$sherlock->birthday; # => 'March 31'
$sherlock->voiced_by; # => 'Suzuko Mimori'
$sherlock->nickname_voiced_by; # => 'mimorin'
$sherlock->toys; # => 'Psychokinesis'
$sherlock->color; # => 'pink'
lib/Acme/MilkyHolmes.pm view on Meta::CPAN
my ($sherlock, $nero, $elly, $cordelia, $kazumi, $alice) = Acme::MilkyHolmes->members_of($MilkyHolmesSisters);
=head1 DESCRIPTION
Milky Holmes is one of the most famous Japanese TV animation. Acme::MilkyHolmes provides character information of Milky Holmes.
=head1 METHODS
=head2 C<members(%options)>
options: C<$options{locale} = ja,en> default is ja
my @members = Acme::MilkyHolmes->members(locale => en);
fetch Milky Holmes members. See SYNOPSIS.
=head2 C<members_of($member_name_const, %options)>
options: C<$options{locale} = ja,en> default is ja
fetch members specified in C<$member_name_const>. See SYNOPSIS and EXPORTED CONSTANTS
=head1 EXPORTED CONSTANTS
=over 4
=item * C<$MilkyHolmes> : members of Milky Holmes (Sherlock, Nero, Elly and Cordelia).
lib/Acme/MilkyHolmes/Character.pm view on Meta::CPAN
use Data::Section::Simple;
use Localizer::Resource;
use Localizer::Style::Gettext;
use YAML::Tiny;
use utf8;
has localizer => (
is => 'ro',
);
has locale => (
is => 'rw',
isa => 'Str',
required => 1,
default => 'ja',
);
has common => (
is => 'ro',
);
lib/Acme/MilkyHolmes/Character.pm view on Meta::CPAN
sub name {
my ($self) = @_;
my $sep = $self->_localized_field('name_separator');
$sep = ' ' if ( !defined $sep );
if ( defined $self->_localized_field('name') ) {
return $self->_localized_field('name');
}
elsif ( $self->locale eq 'ja' ) {
if( defined $sep && $sep eq 'ã»' ) {
return $self->firstname . $sep . $self->familyname;
}
return $self->familyname . $sep . $self->firstname;
}
return $self->firstname . $sep . $self->familyname;
}
sub firstname {
my ($self) = @_;
lib/Acme/MilkyHolmes/Character.pm view on Meta::CPAN
return $self->_localized_field('voiced_by');
}
sub nickname_voiced_by {
my ($self) = @_;
return $self->_localized_field('nickname_voiced_by');
}
sub _localized_field {
my ($self, $name) = @_;
if ( exists $self->localizer->{ $self->locale } ) {
my $localizer = $self->localizer->{ $self->locale };
return $localizer->maketext($name);
}
return $self->{$name};
}
sub BUILD {
my ($self, $args) = @_;
my $ds = Data::Section::Simple->new( ref $self );
my $sections = $ds->get_data_section();
lib/Acme/MilkyHolmes/Character.pm view on Meta::CPAN
Acme::MilkyHolmes::Character - Character base class for Milky Holmes
=head1 SYNOPSIS
use strict;
use warnings;
use utf8;
use Acme::MilkyHolmes::Character::SherlockShellingford;
my $sherlock = Acme::MilkyHolmes::Character::SherlockShellingford->new();
$sherlock->locale('en');
$sherlock->name; # => 'Sherlock Shellingford'
$sherlock->firstname; # => 'Sherlock'
$sherlock->familyname; # => 'Shellingford'
$sherlock->nickname; # => 'Sheryl'
$sherlock->birthday; # => 'March 31'
$sherlock->voiced_by; # => 'Suzuko Mimori'
=head1 METHODS
=head2 C<name>
t/01_members.t view on Meta::CPAN
use strict;
use warnings;
use Acme::MilkyHolmes;
use Test::More;
use utf8;
subtest 'members - milkyholmes', sub {
subtest 'en', sub {
my @milkyholmes = Acme::MilkyHolmes->members( locale => 'en' );
is( scalar(@milkyholmes), 4);
is( $milkyholmes[0]->name, 'Sherlock Shellingford' );
is( $milkyholmes[1]->name, 'Nero Yuzurizaki' );
is( $milkyholmes[2]->name, 'Hercule Barton' );
is( $milkyholmes[3]->name, 'Cordelia Glauca' );
};
subtest 'default - ja', sub {
my @milkyholmes = Acme::MilkyHolmes->members();
is( scalar(@milkyholmes), 4);
is( $milkyholmes[0]->name, 'ã·ã£ã¼ããã¯ã»ã·ã§ãªã³ãã©ã¼ã' );
is( $milkyholmes[1]->name, 'è²å´ ãã' );
is( $milkyholmes[2]->name, 'ã¨ã«ãã¥ã¼ã«ã»ãã¼ãã³' );
is( $milkyholmes[3]->name, 'ã³ã¼ããªã¢ã»ã°ã©ã¦ã«' );
};
};
subtest 'members_of - milkyholmes', sub {
subtest 'en', sub {
my @milkyholmes = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmes, locale => 'en' );
is( scalar(@milkyholmes), 4);
is( $milkyholmes[0]->name, 'Sherlock Shellingford' );
is( $milkyholmes[1]->name, 'Nero Yuzurizaki' );
is( $milkyholmes[2]->name, 'Hercule Barton' );
is( $milkyholmes[3]->name, 'Cordelia Glauca' );
};
subtest 'default - ja', sub {
my @milkyholmes = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmes);
is( scalar(@milkyholmes), 4);
is( $milkyholmes[0]->name, 'ã·ã£ã¼ããã¯ã»ã·ã§ãªã³ãã©ã¼ã' );
is( $milkyholmes[1]->name, 'è²å´ ãã' );
is( $milkyholmes[2]->name, 'ã¨ã«ãã¥ã¼ã«ã»ãã¼ãã³' );
is( $milkyholmes[3]->name, 'ã³ã¼ããªã¢ã»ã°ã©ã¦ã«' );
};
};
subtest 'members_of - feathers', sub {
subtest 'en', sub {
my @members = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmesFeathers, locale => 'en' );
is( scalar(@members), 2);
is( $members[0]->name, 'Kazumi Tokiwa' );
is( $members[1]->name, 'Alice Myojingawa' );
};
subtest 'default - ja', sub {
my @members = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmesFeathers);
is( scalar(@members), 2);
is( $members[0]->name, 'å¸¸ç¤ ã«ãºã' );
is( $members[1]->name, 'æç¥å· ã¢ãªã¹' );
};
};
subtest 'members_of - milkyholmes sisters', sub {
subtest 'en', sub {
my @members = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmesSisters, locale => 'en' );
is( scalar(@members), 6);
is( $members[0]->name, 'Sherlock Shellingford' );
is( $members[1]->name, 'Nero Yuzurizaki' );
is( $members[2]->name, 'Hercule Barton' );
is( $members[3]->name, 'Cordelia Glauca' );
is( $members[4]->name, 'Kazumi Tokiwa' );
is( $members[5]->name, 'Alice Myojingawa' );
};
subtest 'default - ja', sub {
my @members = Acme::MilkyHolmes->members_of($Acme::MilkyHolmes::MilkyHolmesSisters);
t/01_members.t view on Meta::CPAN
is( $members[4]->name, 'å¸¸ç¤ ã«ãºã' );
is( $members[5]->name, 'æç¥å· ã¢ãªã¹' );
};
};
subtest 'Sherlock', sub {
subtest 'en', sub {
my $sherlock = Acme::MilkyHolmes::Character::SherlockShellingford->new();
$sherlock->locale('en');
is( $sherlock->name, 'Sherlock Shellingford' );
is( $sherlock->firstname, 'Sherlock' );
is( $sherlock->familyname, 'Shellingford' );
is( $sherlock->nickname, 'Sheryl' );
is( $sherlock->birthday, 'March 31' );
is( $sherlock->voiced_by, 'Suzuko Mimori' );
is( $sherlock->nickname_voiced_by, 'mimorin' );
is( $sherlock->toys, 'Psychokinesis' );
is( $sherlock->color, 'pink' );
ok( $sherlock->color_enable );
};
subtest 'ja', sub {
my $sherlock = Acme::MilkyHolmes::Character::SherlockShellingford->new();
is( $sherlock->locale, 'ja' );
is( $sherlock->name, 'ã·ã£ã¼ããã¯ã»ã·ã§ãªã³ãã©ã¼ã' );
is( $sherlock->firstname, 'ã·ã£ã¼ããã¯' );
is( $sherlock->familyname, 'ã·ã§ãªã³ãã©ã¼ã' );
is( $sherlock->nickname, 'ã·ã£ã' );
is( $sherlock->birthday, '3/31' );
is( $sherlock->voiced_by, '䏿£® ããã' );
is( $sherlock->nickname_voiced_by, 'ã¿ããã' );
is( $sherlock->toys, 'ãµã¤ã³ããã·ã¹' );
is( $sherlock->color, 'pink' );
ok( $sherlock->color_enable );
};
};
subtest 'Nero', sub {
subtest 'en', sub {
my $nero = Acme::MilkyHolmes::Character::NeroYuzurizaki->new();
$nero->locale('en');
is( $nero->name, 'Nero Yuzurizaki' );
is( $nero->firstname, 'Nero' );
is( $nero->familyname, 'Yuzurizaki' );
is( $nero->nickname, 'Nero' );
is( $nero->birthday, 'August 28' );
is( $nero->voiced_by, 'Sora Tokui' );
is( $nero->nickname_voiced_by, 'soramaru' );
is( $nero->toys, 'Direct Hack' );
is( $nero->color, 'yellow' );
ok( $nero->color_enable );
};
subtest 'ja', sub {
my $nero = Acme::MilkyHolmes::Character::NeroYuzurizaki->new();
is( $nero->locale, 'ja' );
is( $nero->name, 'è²å´ ãã' );
is( $nero->firstname, 'ãã' );
is( $nero->familyname, 'è²å´' );
is( $nero->nickname, 'ãã' );
is( $nero->birthday, '8/28' );
is( $nero->voiced_by, 'å¾³äº é空' );
is( $nero->nickname_voiced_by, 'ããã¾ã' );
is( $nero->toys, 'ãã¤ã¬ã¯ãããã¯' );
is( $nero->color, 'yellow' );
ok( $nero->color_enable );
};
};
subtest 'Elly', sub {
subtest 'en', sub {
my $elly = Acme::MilkyHolmes::Character::HerculeBarton->new();
$elly->locale('en');
is( $elly->name, 'Hercule Barton' );
is( $elly->firstname, 'Hercule' );
is( $elly->familyname, 'Barton' );
is( $elly->nickname, 'Elly' );
is( $elly->birthday, 'October 21' );
is( $elly->voiced_by, 'Mikoi Sasaki' );
is( $elly->nickname_voiced_by, 'mikoron' );
is( $elly->toys, 'Tri-Ascend' );
is( $elly->color, 'green' );
ok( $elly->color_enable );
};
subtest 'ja', sub {
my $elly = Acme::MilkyHolmes::Character::HerculeBarton->new();
is( $elly->locale, 'ja' );
is( $elly->name, 'ã¨ã«ãã¥ã¼ã«ã»ãã¼ãã³' );
is( $elly->firstname, 'ã¨ã«ãã¥ã¼ã«' );
is( $elly->familyname, 'ãã¼ãã³' );
is( $elly->nickname, 'ã¨ãªã¼' );
is( $elly->birthday, '10/21' );
is( $elly->voiced_by, 'ä½ã
æ¨ æªæ¥' );
is( $elly->nickname_voiced_by, 'ã¿ããã' );
is( $elly->toys, 'ãã©ã¤ã¢ã»ã³ã' );
is( $elly->color, 'green' );
ok( $elly->color_enable );
};
};
subtest 'Cordelia', sub {
subtest 'en', sub {
my $cordelia = Acme::MilkyHolmes::Character::CordeliaGlauca->new();
$cordelia->locale('en');
is( $cordelia->name, 'Cordelia Glauca' );
is( $cordelia->firstname, 'Cordelia' );
is( $cordelia->familyname, 'Glauca' );
is( $cordelia->nickname, 'Cordelia' );
is( $cordelia->birthday, 'December 19' );
is( $cordelia->voiced_by, 'Izumi Kitta' );
is( $cordelia->nickname_voiced_by, 'izusama' );
is( $cordelia->toys, 'Hyper Sensitive' );
is( $cordelia->color, 'blue' );
ok( $cordelia->color_enable );
};
subtest 'ja', sub {
my $cordelia = Acme::MilkyHolmes::Character::CordeliaGlauca->new();
is( $cordelia->locale, 'ja' );
is( $cordelia->name, 'ã³ã¼ããªã¢ã»ã°ã©ã¦ã«' );
is( $cordelia->firstname, 'ã³ã¼ããªã¢' );
is( $cordelia->familyname, 'ã°ã©ã¦ã«' );
is( $cordelia->nickname, 'ã³ã¼ããªã¢' );
is( $cordelia->birthday, '12/19' );
is( $cordelia->voiced_by, 'æ©ç° ããã¿' );
is( $cordelia->nickname_voiced_by, 'ããæ§' );
is( $cordelia->toys, 'ãã¤ãã¼ã»ã³ã·ãã£ã' );
is( $cordelia->color, 'blue' );
ok( $cordelia->color_enable );
};
};
subtest 'Kazumi', sub {
subtest 'en', sub {
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
$kazumi->locale('en');
is( $kazumi->name, 'Kazumi Tokiwa' );
is( $kazumi->firstname, 'Kazumi' );
is( $kazumi->familyname, 'Tokiwa' );
is( $kazumi->nickname, 'Kazumi' );
is( $kazumi->birthday, 'November 20' );
is( $kazumi->voiced_by, 'Aimi' );
is( $kazumi->nickname_voiced_by, 'aimin' );
is( $kazumi->toys, 'Arrow' );
is( $kazumi->color, 'black' );
ok( !$kazumi->color_enable ); # default disable
};
subtest 'ja', sub {
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
is( $kazumi->locale, 'ja' );
is( $kazumi->name, 'å¸¸ç¤ ã«ãºã' );
is( $kazumi->firstname, 'ã«ãºã' );
is( $kazumi->familyname, '常ç¤' );
is( $kazumi->nickname, 'ã«ãºã' );
is( $kazumi->birthday, '11/20' );
is( $kazumi->voiced_by, 'æç¾' );
is( $kazumi->nickname_voiced_by, 'ããã¿ã' );
is( $kazumi->toys, 'ã¢ãã¼' );
is( $kazumi->color, 'black' );
ok( !$kazumi->color_enable ); # default disable
};
};
subtest 'Alice', sub {
subtest 'en', sub {
my $alice = Acme::MilkyHolmes::Character::AliceMyojingawa->new();
$alice->locale('en');
is( $alice->name, 'Alice Myojingawa' );
is( $alice->firstname, 'Alice' );
is( $alice->familyname, 'Myojingawa' );
is( $alice->nickname, 'Alice' );
is( $alice->birthday, 'June 3' );
is( $alice->voiced_by, 'Ayasa Itoh' );
is( $alice->nickname_voiced_by, 'ayasa' );
is( $alice->toys, 'Bound' );
is( $alice->color, 'white' );
ok( !$alice->color_enable ); # default disable
};
subtest 'ja', sub {
my $alice = Acme::MilkyHolmes::Character::AliceMyojingawa->new();
is( $alice->locale, 'ja' );
is( $alice->name, 'æç¥å· ã¢ãªã¹' );
is( $alice->firstname, 'ã¢ãªã¹' );
is( $alice->familyname, 'æç¥å·' );
is( $alice->nickname, 'ã¢ãªã¹' );
is( $alice->birthday, '6/3' );
is( $alice->voiced_by, 'ä¼è¤ 彩æ²' );
is( $alice->nickname_voiced_by, '彩æ²' );
is( $alice->toys, 'ãã¦ã³ã' );
is( $alice->color, 'white' );
ok( !$alice->color_enable ); # default disable
t/02_kazumis_voiced_by.t view on Meta::CPAN
use Test::MockTime qw( :all );
use Acme::MilkyHolmes;
use Test::More;
use utf8;
subtest 'en - Terakawa named', sub {
set_fixed_time('2013-12-24T23:59:59Z');
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
$kazumi->locale('en');
is( $kazumi->voiced_by, 'Aimi Terakawa' );
restore_time();
};
subtest 'ja - Terakawa named', sub {
set_fixed_time('2013-12-24T23:59:59Z');
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
is( $kazumi->voiced_by, 'å¯ºå· æç¾' );
restore_time();
};
subtest 'en - Aimi named', sub {
set_fixed_time('2013-12-25T00:00:00Z');
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
$kazumi->locale('en');
is( $kazumi->voiced_by, 'Aimi' );
restore_time();
};
subtest 'ja - Aimi named', sub {
set_fixed_time('2013-12-25T00:00:00Z');
my $kazumi = Acme::MilkyHolmes::Character::KazumiTokiwa->new();
is( $kazumi->voiced_by, 'æç¾' );
( run in 2.049 seconds using v1.01-cache-2.11-cpan-5a3173703d6 )