File Coverage

blib/lib/STIX/Common/List.pm
Criterion Covered Total %
statement 41 53 77.3
branch 2 2 100.0
condition 2 2 100.0
subroutine 18 22 81.8
pod 17 17 100.0
total 80 96 83.3


line stmt bran cond sub pod time code
1             package STIX::Common::List;
2              
3 27     27   144541 use 5.016000;
  27         97  
4 27     27   170 use strict;
  27         60  
  27         924  
5 27     27   124 use warnings;
  27         95  
  27         1370  
6 27     27   780 use utf8;
  27         354  
  27         144  
7              
8 27     27   21169 use overload '@{}' => \&to_array, fallback => 1;
  27         49785  
  27         309  
9              
10             sub new {
11 2188     2188 1 252701 my $collection = CORE::shift;
12 2188         51689 bless({collections => [@_]}, $collection);
13             }
14              
15             sub each {
16              
17 2     2 1 1591 my ($self, $callback) = @_;
18              
19 2 100       8 return @{$self} unless $callback;
  1         5  
20              
21 1         3 my $idx = 0;
22 1         3 $_->$callback($idx++) for @{$self};
  1         4  
23              
24 1         12 return $self;
25              
26             }
27              
28             sub grep {
29 0     0 1 0 my ($self, $callback) = @_;
30 0         0 return $self->new(CORE::grep { $_->$callback(@_) } @{$self});
  0         0  
  0         0  
31             }
32              
33             sub map {
34 0     0 1 0 my ($self, $callback) = @_;
35 0         0 return $self->new(CORE::map { $_->$callback(@_) } @{$self});
  0         0  
  0         0  
36             }
37              
38 3     3 1 1896 sub size { CORE::scalar @{$_[0]->{collections}} }
  3         46  
39              
40 5     5 1 34 sub get { $_[0]->{collections}->[$_[1]] }
41              
42 1     1 1 4 sub set { $_[0]->{collections}->[$_[1]] = $_[2] }
43              
44 1     1 1 4 sub clear { @{$_[0]->{collections}} = () }
  1         4  
45              
46 2     2 1 3230 sub pop { CORE::pop @{$_[0]->{collections}} }
  2         14  
47              
48 2     2 1 73 sub push { CORE::push @{$_[0]->{collections}}, @_[1 .. $#_] }
  2         18  
49              
50 0     0 1 0 sub shift { CORE::shift @{$_[0]->{collections}} }
  0         0  
51              
52 1     1 1 3 sub unshift { CORE::unshift @{$_[0]->{collections}}, @_[1 .. $#_] }
  1         7  
53              
54 2   100 2 1 1376 sub join { CORE::join($_[1] // '', @{$_[0]}) }
  2         8  
55              
56 3     3 1 16 sub first { $_[0]->{collections}[0] }
57              
58 1     1 1 7 sub last { $_[0]->{collections}[-1] }
59              
60 16876     16876 1 80690 sub to_array { [@{$_[0]->{collections}}] }
  16876         121609  
61              
62 0     0 1   sub TO_JSON { [@{$_[0]->{collections}}] }
  0            
63              
64             1;
65              
66             __END__