File Coverage

blib/lib/List/SomeUtils.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod n/a
total 25 25 100.0


line stmt bran cond sub pod time code
1             package List::SomeUtils;
2              
3 4     4   208070 use 5.006;
  4         18  
4 4     4   27 use strict;
  4         10  
  4         110  
5 4     4   26 use warnings;
  4         9  
  4         220  
6              
7             our $VERSION = '0.56';
8              
9 4     4   27 use Exporter qw( import );
  4         9  
  4         221  
10              
11 4     4   2119 use Module::Implementation;
  4         28068  
  4         775  
12              
13             my @subs = qw(
14             after
15             after_incl
16             all
17             all_u
18             any
19             any_u
20             apply
21             before
22             before_incl
23             bsearch
24             bsearchidx
25             each_array
26             each_arrayref
27             false
28             firstidx
29             firstres
30             firstval
31             indexes
32             insert_after
33             insert_after_string
34             lastidx
35             lastres
36             lastval
37             mesh
38             minmax
39             mode
40             natatime
41             none
42             none_u
43             notall
44             notall_u
45             nsort_by
46             one
47             one_u
48             onlyidx
49             onlyres
50             onlyval
51             pairwise
52             part
53             singleton
54             sort_by
55             true
56             uniq
57             );
58              
59             my %aliases = (
60             bsearch_index => 'bsearchidx',
61             distinct => 'uniq',
62             first_index => 'firstidx',
63             first_result => 'firstres',
64             first_value => 'firstval',
65             last_index => 'lastidx',
66             last_result => 'lastres',
67             last_value => 'lastval',
68             only_index => 'onlyidx',
69             only_result => 'onlyres',
70             only_value => 'onlyval',
71             zip => 'mesh',
72             );
73              
74             our @EXPORT_OK = ( @subs, keys %aliases );
75             our %EXPORT_TAGS = ( all => \@EXPORT_OK );
76              
77             {
78             my $loader = Module::Implementation::build_loader_sub(
79             implementations => [ 'XS', 'PP' ],
80             symbols => \@subs,
81             );
82              
83             $loader->();
84             }
85              
86             for my $alias ( keys %aliases ) {
87             ## no critic (TestingAndDebugging::ProhibitNoStrict)
88 4     4   40 no strict 'refs';
  4         12  
  4         406  
89             *{$alias} = __PACKAGE__->can( $aliases{$alias} );
90             }
91              
92             ## no critic (Subroutines::ProhibitUnusedPrivateSubroutines)
93             sub _XScompiled {
94 4     4   5030 return Module::Implementation::implementation_for(__PACKAGE__) eq 'XS';
95             }
96              
97             1;
98              
99             # ABSTRACT: Provide the stuff missing in List::Util
100              
101             __END__