Acme-MadokaMagica

 view release on metacpan or  search on metacpan

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

Readonly our $AloneMembers => [
    @$Alone,
];

Readonly our $MainMembers => [
    @$HollyQuintet,
];

sub alone_members {
    my $self = shift;
    return $self->members_of($AloneMembers,(caller)[2]);
}

sub main_members {
    my $self = shift;
    return $self->members_of($MainMembers,(caller)[2]);
}

sub members_of {
    my ($self, $team) = @_;
    my $line = $_[2] ||  (caller)[2];
    my @members;

    for my $member_name (@{ $team }){
        my $pkg = "Acme::MadokaMagica::TvMembers::$member_name";
        if (eval "require $pkg;1;"){
            push @members,$pkg->new("line" => $line);
        }
    }

    return @members;

lib/Acme/MadokaMagica/TvMembers.pm  view on Meta::CPAN

    for my $section_name ( keys %{$sections} ) {
        my $yml = YAML::Tiny->read_string($sections->{$section_name});
        my $member_info = $yml->[0];
        for my $key ( keys %{$member_info} ) {
            $self->{$key} = $member_info->{$key};
        }
    }
    if (defined $args{line}) {
        $self->{startline} = $args{line};
    } else {
        $self->{startline} = (caller)[2];
    }

    return bless $self, $class;
}

sub has_qb {
    my $self = shift;

    if (@_){
      $self->{_has_qb} = shift;
    }

    return $self->{_has_qb};
}

sub name {
    my ($self) = @_;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->has_qb ? $self->{witchename} : $self->lastname.' '.$self->firstname;
}

sub firstname {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if($line >= $limit ) {
        return undef;
    }
    return $self->{firstname};
}

sub birthday {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if($line >= $limit ) {
        return undef;
    }
    return $self->{birthday};
}

sub blood_type {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->{blood_type};
}

sub lastname {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->{lastname};
}

sub age {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->{age};
}

sub color{
    my ($self) = @_;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }

    return $self->has_qb ? "black" : $self->{color};
}

sub qb {
    my ($self) = @_;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }

    $self->has_qb(1);
}

sub say {
    my ($self) = @_;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->{say};
}

sub cv {
    my $self = shift;
    my $line = (caller)[2];

    my $limit = $self->{startline} +100;
    if( $line >= $limit ) {
        return undef;
    }
    return $self->{cv};
}


1;



( run in 2.067 seconds using v1.01-cache-2.11-cpan-1e74a51a04c )