File Coverage

blib/lib/Data/Sah/Filter/perl/Str/replace_map.pm
Criterion Covered Total %
statement 11 18 61.1
branch n/a
condition 0 2 0.0
subroutine 4 6 66.6
pod 0 2 0.0
total 15 28 53.5


line stmt bran cond sub pod time code
1             package Data::Sah::Filter::perl::Str::replace_map;
2              
3 1     1   375235 use 5.010001;
  1         5  
4 1     1   6 use strict;
  1         3  
  1         36  
5 1     1   6 use warnings;
  1         2  
  1         74  
6              
7 1     1   656 use Data::Dmp;
  1         3627  
  1         374  
8              
9             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
10             our $DATE = '2024-07-17'; # DATE
11             our $DIST = 'Data-Sah-Filter'; # DIST
12             our $VERSION = '0.025'; # VERSION
13              
14             sub meta {
15             +{
16 0     0 0   v => 1,
17             summary => 'Replace (map) some values with (to) other values',
18             args => {
19             map => {
20             schema => 'hash*',
21             req => 1,
22             },
23             },
24             examples => [
25             {value=>"foo", filter_args=>{map=>{foo=>"bar", baz=>"qux"}}, filtered_value=>"bar"},
26             {value=>"bar", filter_args=>{map=>{foo=>"bar", baz=>"qux"}}},
27             ],
28             };
29             }
30              
31             sub filter {
32 0     0 0   my %fargs = @_;
33              
34 0           my $dt = $fargs{data_term};
35 0   0       my $gen_args = $fargs{args} // {};
36              
37 0           my $res = {};
38             $res->{expr_filter} = join(
39             "",
40             "do {",
41             " my \$tmp = $dt; ",
42 0           " my \$map = ".dmp($gen_args->{map})."; ",
43             " defined \$map->{\$tmp} ? \$map->{\$tmp} : \$tmp; ",
44             "}",
45             );
46              
47 0           $res;
48             }
49              
50             1;
51             # ABSTRACT: Replace (map) some values with (to) other values
52              
53             __END__