File Coverage

blib/lib/Acme/2zicon.pm
Criterion Covered Total %
statement 29 45 64.4
branch 2 12 16.6
condition n/a
subroutine 8 11 72.7
pod 4 4 100.0
total 43 72 59.7


line stmt bran cond sub pod time code
1             package Acme::2zicon;
2 3     3   127627 use 5.008001;
  3         10  
3 3     3   16 use strict;
  3         5  
  3         65  
4 3     3   22 use warnings;
  3         5  
  3         93  
5              
6 3     3   13 use Carp qw(croak);
  3         4  
  3         179  
7 3     3   2638 use DateTime;
  3         233543  
  3         1559  
8              
9             our $VERSION = "0.6";
10              
11             my @members = qw(
12             MatobaKarin
13             NagataMinari
14             NakamuraAkari
15             NemotoNagi
16             OkumuraNonoka
17             ShigematsuYuka
18             SuyamaEmiri
19             TsurumiMoe
20             OtsukaMiyu
21             YamatoAo
22             );
23              
24             sub new {
25 2     2 1 28 my $class = shift;
26 2         12 my $self = bless {members => []}, $class;
27              
28 2         11 $self->_initialize;
29              
30 2         8 return $self;
31             }
32              
33             sub members {
34 2     2 1 12 my ($self, $type, @members) = @_;
35 2 50       12 @members = @{$self->{members}} unless @members;
  2         9  
36              
37 2 50       18 return @members unless $type;
38             }
39              
40             sub sort {
41 0     0 1 0 my ($self, $type, $order, @members) = @_;
42 0 0       0 @members = $self->members unless @members;
43              
44             # order by desc if $order is true
45 0 0       0 if ($order) {
46 0         0 return sort {$b->$type <=> $a->$type} @members;
  0         0  
47             }
48             else {
49 0         0 return sort {$a->$type <=> $b->$type} @members;
  0         0  
50             }
51             }
52              
53             sub select {
54 0     0 1 0 my ($self, $type, $number, $operator, @members) = @_;
55              
56             $self->_die('invalid operator was passed in')
57 0 0       0 unless grep {$operator eq $_} qw(== >= <= > <);
  0         0  
58              
59 0 0       0 @members = $self->members unless @members;
60 0         0 my $compare = eval "(sub { \$number $operator \$_[0] })";
61              
62 0         0 return grep { $compare->($_->$type) } @members;
  0         0  
63             }
64              
65             sub _initialize {
66 2     2   5 my $self = shift;
67              
68 2         8 for my $member (@members) {
69 20         45 my $module_name = 'Acme::2zicon::'.$member;
70              
71 20         1250 eval qq|require $module_name;|;
72 20         61 push @{$self->{members}}, $module_name->new;
  20         158  
73             }
74              
75 2         5 return 1;
76             }
77              
78             sub _die {
79 0     0     my ($self, $message) = @_;
80 0           Carp::croak($message);
81             }
82              
83             1;
84             __END__