File Coverage

lib/MouseX/AttributeHelpers/Collection/List.pm
Criterion Covered Total %
statement 26 28 92.8
branch 4 4 100.0
condition n/a
subroutine 13 14 92.8
pod 1 1 100.0
total 44 47 93.6


line stmt bran cond sub pod time code
1             package MouseX::AttributeHelpers::Collection::List;
2 7     21   2569 use Mouse;
  7         15  
  7         55  
3              
4             extends 'MouseX::AttributeHelpers::Base';
5              
6             has '+method_constructors' => (
7             default => sub {
8             return +{
9             count => sub {
10             my ($attr, $name) = @_;
11 25     25   43 return sub { scalar @{ $_[0]->$name() } };
  25     4   198  
12             },
13             empty => sub {
14             my ($attr, $name) = @_;
15 9 100   9   45 return sub { scalar @{ $_[0]->$name() } ? 1 : 0 };
  9         105  
16             },
17             find => sub {
18             my ($attr, $name) = @_;
19             return sub {
20 7     11   100 for my $v (@{ $_[0]->$name() }) {
  10         64  
21 13 100       107 return $v if $_[1]->($v);
22             }
23 0         0 return;
24             };
25             },
26             map => sub {
27             my ($attr, $name) = @_;
28 9     13   87 return sub { map { $_[1]->($_) } @{ $_[0]->$name() } };
  90         348  
  9         52  
29             },
30             grep => sub {
31             my ($attr, $name) = @_;
32 12     18   51 return sub { grep { $_[1]->($_) } @{ $_[0]->$name() } };
  114         508  
  12         61  
33             },
34             elements => sub {
35             my ($attr, $name) = @_;
36 15     23   27 return sub { @{ $_[0]->$name() } };
  15         231  
37             },
38             join => sub {
39             my ($attr, $name) = @_;
40 9     19   19 return sub { join $_[1], @{ $_[0]->$name() } };
  9         94  
41             },
42             get => sub {
43             my ($attr, $name) = @_;
44 3     9   27 return sub { $_[0]->$name()->[$_[1]] };
45             },
46             first => sub {
47             my ($attr, $name) = @_;
48 6     8   45 return sub { $_[0]->$name()->[0] };
49             },
50             last => sub {
51             my ($attr, $name) = @_;
52 6     10   45 return sub { $_[0]->$name()->[-1] };
53             },
54             };
55             },
56             );
57              
58 0     0 1 0 sub helper_type { 'ArrayRef' }
59              
60 7     7   14991 no Mouse;
  7         16  
  7         45  
61             __PACKAGE__->meta->make_immutable(inline_constructor => 0);
62             __END__