File Coverage

blib/lib/Sort/Sub/by_dmp.pm
Criterion Covered Total %
statement 26 27 96.3
branch 4 8 50.0
condition n/a
subroutine 7 8 87.5
pod 0 2 0.0
total 37 45 82.2


line stmt bran cond sub pod time code
1             package Sort::Sub::by_dmp;
2              
3             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
4             our $DATE = '2019-12-15'; # DATE
5             our $DIST = 'Sort-Sub-by_dmp'; # DIST
6             our $VERSION = '0.002'; # VERSION
7              
8 1     1   1514 use 5.010001;
  1         4  
9 1     1   5 use strict;
  1         1  
  1         18  
10 1     1   5 use warnings;
  1         1  
  1         27  
11              
12 1     1   435 use Data::Dmp;
  1         1505  
  1         80  
13              
14             sub meta {
15             return {
16 0     0 0 0 v => 1,
17             summary => 'Sort data structures by comparing their dump (using Data::Dmp)',
18             };
19             }
20              
21             sub gen_sorter {
22 1     1 0 17 my ($is_reverse, $is_ci) = @_;
23              
24             sub {
25 1     1   6 no strict 'refs';
  1         1  
  1         131  
26              
27 9     9   66 my $caller = caller();
28 9 50       14 my $a = @_ ? $_[0] : ${"$caller\::a"};
  9         19  
29 9 50       10 my $b = @_ ? $_[1] : ${"$caller\::b"};
  9         16  
30              
31 9         9 my $cmp;
32              
33             # XXX cache
34              
35 9         14 my $dmp_a = dmp($a);
36 9         209 my $dmp_b = dmp($b);
37              
38 9 50       219 $cmp = $is_ci ? lc($dmp_a) cmp lc($dmp_b) : $dmp_a cmp $dmp_b;
39 9 50       22 $is_reverse ? -1*$cmp : $cmp;
40 1         13 };
41             }
42              
43             1;
44             # ABSTRACT: Sort data structures by comparing their dump (using Data::Dmp)
45              
46             __END__