File Coverage

blib/lib/Sorter/from_comparer.pm
Criterion Covered Total %
statement 8 20 40.0
branch 0 4 0.0
condition n/a
subroutine 3 6 50.0
pod 0 2 0.0
total 11 32 34.3


line stmt bran cond sub pod time code
1             package Sorter::from_comparer;
2              
3 1     1   268610 use 5.010001;
  1         3  
4 1     1   4 use strict 'subs', 'vars';
  1         1  
  1         34  
5 1     1   4 use warnings;
  1         6  
  1         331  
6              
7             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
8             our $DATE = '2024-01-24'; # DATE
9             our $DIST = 'Sorter-from_comparer'; # DIST
10             our $VERSION = '0.001'; # VERSION
11              
12             sub meta {
13             return +{
14 0     0 0   v => 1,
15             args => {
16             comparer => {schema=>'perl::comparer::modname_with_optional_args*', req=>1},
17             reverse => {schema=>'bool*'},
18             },
19             };
20             }
21              
22             sub gen_sorter {
23 0     0 0   my %args = @_;
24              
25 0 0         my $comparer = $args{comparer} or die "Please specify comparer";
26 0           my $reverse = $args{reverse};
27              
28 0           require Module::Load::Util;
29              
30 0           my ($mod, $args) = Module::Load::Util::_normalize_module_with_optional_args($comparer);
31 0           $mod = Module::Load::Util::_load_module({ns_prefix=>"Comparer"}, $mod);
32 0           my $cmp = &{"$mod\::gen_comparer"}(@$args);
  0            
33              
34             sub {
35 0 0   0     sort { $reverse ? $cmp->($b,$a) : $cmp->($a,$b) } @_;
  0            
36 0           };
37             }
38              
39             1;
40             # ABSTRACT: Sort by comparer generated by a Comparer:: module
41              
42             __END__