Acme-MilkyHolmes

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

[![Build Status](https://travis-ci.org/tsucchi/p5-Acme-MilkyHolmes.svg?branch=master)](https://travis-ci.org/tsucchi/p5-Acme-MilkyHolmes) [![Coverage Status](https://img.shields.io/coveralls/tsucchi/p5-Acme-MilkyHolmes/master.svg?style=flat)](https:/...
# NAME

Acme::MilkyHolmes - There's more than one way to do it!(SEIKAI HA HITOTSU! JANAI!!)

# SYNOPSIS

    use strict;
    use warnings;
    use utf8;
    use Acme::MilkyHolmes;

    # 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

eg/say.pl  view on Meta::CPAN

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Acme::MilkyHolmes;

my ($sherlock, $nero, $elly, $cordelia)  = Acme::MilkyHolmes->members();

$sherlock->say('ってなんでですかー');
$nero->say('僕のうまうま棒〜');
$elly->say('恥ずかしい...');
$cordelia->say('私の...お花畑...');

eg/say_feathers.pl  view on Meta::CPAN

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Acme::MilkyHolmes qw($MilkyHolmesFeathers);

my ($kazumi, $alice)  = Acme::MilkyHolmes->members_of($MilkyHolmesFeathers);
$kazumi->color_enable(1);
$alice->color_enable(1);
$kazumi->say('アローのトイズ!');
$alice->say('バウンドのトイズ!');

lib/Acme/MilkyHolmes.pm  view on Meta::CPAN

=for stopwords ja

=head1 NAME

Acme::MilkyHolmes - There's more than one way to do it!(SEIKAI HA HITOTSU! JANAI!!)

=head1 SYNOPSIS

    use strict;
    use warnings;
    use utf8;
    use Acme::MilkyHolmes;

    # 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

lib/Acme/MilkyHolmes/Character.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character;
use Mouse;

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',

lib/Acme/MilkyHolmes/Character.pm  view on Meta::CPAN

=for stopwords ja

=head1 NAME

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'

lib/Acme/MilkyHolmes/Character/AliceMyojingawa.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::AliceMyojingawa;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;

no Mouse;

1;

__DATA__

@@ common
---
color: white

lib/Acme/MilkyHolmes/Character/CordeliaGlauca.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::CordeliaGlauca;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;

no Mouse;

1;

__DATA__

@@ common
color: blue

lib/Acme/MilkyHolmes/Character/HerculeBarton.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::HerculeBarton;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;

no Mouse;

1;

__DATA__
@@ common
color: green

@@ en

lib/Acme/MilkyHolmes/Character/KazumiTokiwa.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::KazumiTokiwa;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;
use Time::Piece;

no Mouse;

sub voiced_by { #override
    my ($self) = @_;
    my $now = localtime();
    my $threshold = Time::Piece->strptime('2013-12-25T00:00:00Z', '%Y-%m-%dT%H:%M:%SZ');
    if ( $now >= $threshold ) {
        return $self->_localized_field('voiced_by');

lib/Acme/MilkyHolmes/Character/NeroYuzurizaki.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::NeroYuzurizaki;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;

no Mouse;

1;

__DATA__
@@ common
color: yellow

@@ en

lib/Acme/MilkyHolmes/Character/SherlockShellingford.pm  view on Meta::CPAN

package Acme::MilkyHolmes::Character::SherlockShellingford;
use Mouse;
extends 'Acme::MilkyHolmes::Group::MilkyHolmes';

use utf8;

no Mouse;

1;

__DATA__

@@ common
color: pink

lib/Acme/MilkyHolmes/Role/HasPersonalColor.pm  view on Meta::CPAN


sub color {
    my ($self) = @_;
    return $self->common->[0]->{color};
}


sub say {
    my ($self, $comment) = @_;

    my $message = encode_utf8($self->nickname . ': ' . $comment);

    if ( defined $self->color && $self->color_enable ) {
        $message = $self->_escaped_message($self->color, $message);

    }
    print "$message\n";
}

sub _escaped_color_begin {
    my ($self, $color_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' );
    };

t/02_kazumis_voiced_by.t  view on Meta::CPAN

use strict;
use warnings;

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();



( run in 1.168 second using v1.01-cache-2.11-cpan-49f99fa48dc )