File Coverage

blib/lib/Comparer/similarity.pm
Criterion Covered Total %
statement 11 17 64.7
branch 0 4 0.0
condition n/a
subroutine 4 7 57.1
pod 0 2 0.0
total 15 30 50.0


line stmt bran cond sub pod time code
1             package Comparer::similarity;
2              
3 1     1   303505 use 5.010001;
  1         5  
4 1     1   7 use strict;
  1         2  
  1         32  
5 1     1   12 use warnings;
  1         2  
  1         67  
6              
7 1     1   798 use Text::Levenshtein::XS;
  1         839  
  1         290  
8              
9             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
10             our $DATE = '2024-01-24'; # DATE
11             our $DIST = 'Comparer-similarity'; # DIST
12             our $VERSION = '0.003'; # VERSION
13              
14             sub meta {
15             return +{
16 0     0 0   v => 1,
17             args => {
18             string => {schema=>'str*', req=>1},
19             reverse => {schema => 'bool*'},
20             ci => {schema => 'bool*'},
21             },
22             };
23             }
24              
25             sub gen_comparer {
26 0     0 0   my %args = @_;
27              
28 0           my $reverse = $args{reverse};
29 0           my $ci = $args{ci};
30              
31             sub {
32             (
33             $args{ci} ? (Text::Levenshtein::XS::distance(lc($args{string}), lc($_[0])) <=> Text::Levenshtein::XS::distance(lc($args{string}), lc($_[1]))) :
34             (Text::Levenshtein::XS::distance($args{string}, $_[0]) <=> Text::Levenshtein::XS::distance($args{string}, $_[1]))
35 0 0   0     ) * ($args{reverse} ? -1 : 1)
    0          
36 0           };
37             }
38              
39             1;
40             # ABSTRACT: Compare similarity to a reference string
41              
42             __END__