File Coverage

blib/lib/Acme/PrettyCure.pm
Criterion Covered Total %
statement 22 56 39.2
branch 2 4 50.0
condition 1 2 50.0
subroutine 8 10 80.0
pod 4 6 66.6
total 37 78 47.4


line stmt bran cond sub pod time code
1             package Acme::PrettyCure;
2 16     16   616133 use Moo;
  16         313457  
  16         105  
3 16     16   38597 use 5.008005;
  16         63  
  16         883  
4             our $VERSION = '0.1.3';
5              
6 16     16   13981 use UNIVERSAL::require;
  16         27784  
  16         170  
7              
8             my %SERIES = (
9             First => [qw/ CureBlack CureWhite /],
10             MaxHeart => [qw/ CureBlackMH CureWhiteMH ShinyLuminous /],
11             SplashStar => [qw/ CureBloom CureEgret /],
12             Five => [qw/ CureDream CureRouge CureLemonade CureMint CureAqua /],
13             Fresh => [qw/ CurePeach CureBerry CurePine CurePassion /],
14             HeartCatch => [qw/ CureBlossom CureMarine CureSunshine CureMoonlight /],
15             Suite => [qw/ CureMelody CureRhythm CureBeat CureMuse /],
16             Smile => [qw/ CureHappy CureSunny CurePeace CureMarch CureBeauty /],
17             DokiDoki => [qw/ CureHeart CureDiamond CureRosetta CureSword CureAce /],
18             );
19              
20             $SERIES{FiveGoGo} = [ @{ $SERIES{Five} }, 'MilkyRose' ];
21              
22             $SERIES{AllStar} = [
23             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
24             @{ $SERIES{Fresh} }, @{ $SERIES{HeartCatch} }, @{ $SERIES{Suite} },
25             @{ $SERIES{Smile} },
26             ];
27             $SERIES{AllStarDX1} = [
28             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
29             qw/ CurePeach CureBerry CurePine /
30             ];
31             $SERIES{AllStarDX2} = [
32             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
33             @{ $SERIES{Fresh} },
34             qw/ CureBlossom CureMarine /
35             ];
36             $SERIES{AllStarDX3} = [
37             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
38             @{ $SERIES{Fresh} }, @{ $SERIES{HeartCatch} },
39             qw/ CureMelody CureRhythm /
40             ];
41             $SERIES{AllStarNewStage} = [
42             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
43             @{ $SERIES{Fresh} }, @{ $SERIES{HeartCatch} }, @{ $SERIES{Suite} },
44             @{ $SERIES{Smile} },
45             qw/ CureEcho /
46             ];
47             $SERIES{AllStarNewStage2} = [
48             @{ $SERIES{MaxHeart} }, @{ $SERIES{SplashStar} }, @{ $SERIES{FiveGoGo} },
49             @{ $SERIES{Fresh} }, @{ $SERIES{HeartCatch} }, @{ $SERIES{Suite} },
50             @{ $SERIES{Smile} },
51             qw/ CureHeart CureDiamond CureRosetta CureSword /,
52             ];
53              
54              
55              
56             sub allstar {
57 0     0 0 0 my $class = shift;
58              
59 0         0 my ($nagi, $hono) = $class->_get(qw(CureBlack CureWhite));
60 0         0 $nagi->transform($hono);
61 0         0 my ($hikari,) = $class->_get('ShinyLuminous');
62 0         0 $hikari->transform;
63              
64 0         0 my ($saki, $mai) = $class->_get(qw(CureBloom CureEgret));
65 0         0 $saki->transform($mai);
66              
67 0         0 my @five = $class->_get(@{$SERIES{FiveGoGo}});
  0         0  
68 0         0 my $nozomi = shift @five;
69 0         0 my $miruku = pop @five;
70 0         0 $nozomi->transform(@five);
71 0         0 $miruku->transform;
72              
73 0         0 my @fresh = $class->_get(@{$SERIES{Fresh}});
  0         0  
74 0         0 my $love = shift @fresh;
75 0         0 $love->transform(@fresh);
76              
77 0         0 my @hc = $class->_get(@{$SERIES{HeartCatch}});
  0         0  
78 0         0 my $tsubomi = shift @hc;
79 0         0 $tsubomi->transform(@hc);
80              
81 0         0 my @suite = $class->_get(@{$SERIES{Suite}});
  0         0  
82 0         0 my $hibiki = shift @suite;
83 0         0 $hibiki->transform(@suite);
84              
85 0         0 my @smile = $class->_get(@{$SERIES{Smile}});
  0         0  
86 0         0 my $miyuki = shift @smile;
87 0         0 $miyuki->transform(@smile);
88              
89 0         0 my @dokidoki = $class->_get(@{$SERIES{DokiDoki}});
  0         0  
90 0         0 my $mana = shift @dokidoki;
91 0         0 $mana->transform(@dokidoki);
92             }
93              
94             sub girls {
95 18 50 50     222 $_[0]->_get(@{
96 18     18 0 3399 $SERIES{$_[1] || 'First'} or die q{can't find $team at pretty cure}
97             });
98             }
99              
100 0     0 1 0 sub members { girls(@_) }
101              
102 1     1 1 30 sub all_series{ keys %SERIES }
103 1     1 1 20 sub tv_series{ grep { !/^All/ } keys %SERIES }
  16         46  
104              
105 1     1 1 15 sub now { shift->girls('DokiDoki') }
106              
107             sub _get {
108 18     18   177 my ($class, @names) = @_;
109              
110 18         387 my @girls;
111 18         57 for my $name (@names) {
112 187         2477 my $module = "Acme::PrettyCure::Girl::$name";
113 187 50       1321 $module->require or die $@;
114              
115 187         5775 push @girls, $module->new;
116             }
117              
118 18         511 return @girls;
119             }
120              
121              
122             1;
123             __END__