File Coverage

blib/lib/Pinwheel/Helpers/List.pm
Criterion Covered Total %
statement 34 34 100.0
branch 2 2 100.0
condition n/a
subroutine 9 9 100.0
pod 0 5 0.0
total 45 50 90.0


line stmt bran cond sub pod time code
1             package Pinwheel::Helpers::List;
2              
3 5     5   50915 use strict;
  5         9  
  5         176  
4 5     5   25 use warnings;
  5         9  
  5         127  
5              
6 5     5   26 use Exporter;
  5         8  
  5         193  
7              
8 5     5   633 use Pinwheel::Context;
  5         9  
  5         1917  
9              
10             our @ISA = qw(Exporter);
11             our @EXPORT_OK = qw(group enumerate uniq take drop);
12              
13              
14             sub group
15             {
16 4     4 0 12 my ($list, $n) = @_;
17 4         4 my ($size, $i, @result);
18              
19 4         6 $size = scalar(@$list);
20 4         12 for ($i = 0; $i < $size; ) {
21 5         11 push @result, [map { $list->[$i++] } (1 .. $n)];
  10         27  
22             }
23 4         24 return \@result;
24             }
25              
26             sub enumerate
27             {
28 3     3 0 964 my ($list, $i) = @_;
29 3         4 my @result;
30              
31 3         17 push @result, [$i++, $_] foreach @$list;
32 3         16 return \@result;
33             }
34              
35             sub uniq
36             {
37 4     4 0 1065 my ($list) = @_;
38              
39 4         9 my %seen = ();
40 4         6 my @uniq = grep { ! $seen{$_} ++ } @$list;
  9         30  
41              
42 4         20 return \@uniq;
43             }
44              
45             sub take
46             {
47 4     4 0 660 my ($list, $n) = @_;
48              
49 4 100       11 if ($n < scalar(@$list)) {
50 1         4 $list = [@$list[0 .. $n - 1]];
51             }
52 4         17 return $list;
53             }
54              
55             sub drop
56             {
57 5     5 0 735 my ($list, $n) = @_;
58              
59 5         25 return [@$list[$n .. scalar(@$list) - 1]];
60             }
61              
62              
63             1;