File Coverage

blib/lib/App/NDTools/NDProc/Module/Remove.pm
Criterion Covered Total %
statement 33 38 86.8
branch 3 6 50.0
condition n/a
subroutine 7 10 70.0
pod 0 3 0.0
total 43 57 75.4


line stmt bran cond sub pod time code
1             package App::NDTools::NDProc::Module::Remove;
2              
3 2     2   539 use strict;
  2         5  
  2         65  
4 2     2   12 use warnings FATAL => 'all';
  2         3  
  2         67  
5 2     2   11 use parent 'App::NDTools::NDProc::Module';
  2         4  
  2         10  
6              
7 2     2   122 use Log::Log4Cli;
  2         4  
  2         203  
8 2     2   14 use Struct::Path 0.80 qw(path);
  2         73  
  2         113  
9 2     2   18 use Struct::Path::PerlStyle 0.80 qw(str2path path2str);
  2         28  
  2         704  
10              
11             our $VERSION = '0.09';
12              
13 0     0 0 0 sub MODINFO { "Remove specified parts from structure" }
14              
15             sub arg_opts {
16 0     0 0 0 my $self = shift;
17              
18             return (
19             $self->SUPER::arg_opts(),
20             'strict' => \$self->{OPTS}->{strict},
21             )
22 0         0 }
23              
24             sub process_path {
25 1     1 0 6 my ($self, $data, $path, $opts) = @_;
26              
27 1         1 my $spath = eval { str2path($path) };
  1         4  
28 1 50       4283 die_fatal "Failed to parse path ($@)", 4 if ($@);
29              
30 1 50       2 return ${$data} = undef unless (@{$spath});
  0         0  
  1         4  
31              
32 1         1 my @list = eval { path(${$data}, $spath, paths => 1, strict => $opts->{strict}) };
  1         2  
  1         6  
33 1 50       591 die_fatal "Failed to resolve path '$path'", 4 if ($@);
34              
35 1         3 while (@list) {
36 10         1212 my ($p, undef) = splice @list, -2, 2;
37              
38 10     0   41 log_info { "Removing path '" . path2str($p). "'" };
  0         0  
39 10         39 path(${$data}, $p, delete => 1, strict => 1);
  10         23  
40             }
41             }
42              
43             1; # End of App::NDTools::NDProc::Module::Remove
44              
45             __END__