File Coverage

blib/lib/Audio/Nama/Wav.pm
Criterion Covered Total %
statement 21 58 36.2
branch 0 6 0.0
condition 0 6 0.0
subroutine 7 14 50.0
pod 0 5 0.0
total 28 89 31.4


line stmt bran cond sub pod time code
1             package Audio::Nama::Wav;
2             our $VERSION = 1.0;
3 1     1   23 use Audio::Nama::Assign qw(:all);
  1         2  
  1         172  
4 1     1   6 use Audio::Nama::Util qw(join_path);
  1         18  
  1         55  
5 1     1   5 use Audio::Nama::Log qw(logsub logpkg);
  1         2  
  1         47  
6 1     1   5 use Memoize qw(memoize unmemoize); # called by code in Audio::Nama::Memoize.pm
  1         1  
  1         49  
7 1     1   5 use warnings;
  1         2  
  1         29  
8 1     1   5 no warnings qw(uninitialized);
  1         1  
  1         32  
9 1     1   4 use Carp;
  1         2  
  1         578  
10              
11             sub get_versions {
12 0     0 0   my %args = @_;
13 0   0       $args{sep} //= '_';
14 0   0       $args{ext} //= 'wav';
15 0           my ($sep, $ext) = ($args{sep}, $args{ext});
16 0           my ($dir, $basename) = ($args{dir}, $args{name});
17 0           logpkg(__FILE__,__LINE__,'debug',"getver: dir $dir basename $basename sep $sep ext $ext");
18 0           my %versions = ();
19 0           for my $candidate ( candidates($dir) ) {
20             # logpkg(__FILE__,__LINE__,'debug',"candidate: $candidate");
21            
22 0           my( $match, $dummy, $num) =
23             ( $candidate =~ m/^ ( $basename
24             ($sep (\d+))?
25             \.$ext )
26             $/x
27             ); # regex statement
28 0 0 0       if ( $match ) { $versions{ $num || 'bare' } = $match }
  0            
29             }
30 0     0     logpkg(__FILE__,__LINE__,'debug',sub{"get_version: " , Audio::Nama::json_out(\%versions)});
  0            
31 0           %versions;
32             }
33              
34             sub candidates {
35 0     0 0   my $dir = shift;
36 0           $dir = File::Spec::Link->resolve_all( $dir );
37 0 0         opendir my $wavdir, $dir or die "cannot open $dir: $!";
38 0           my @candidates = readdir $wavdir;
39 0           closedir $wavdir;
40 0           @candidates = grep{ ! (-s join_path($dir, $_) == 44 ) } @candidates;
  0            
41             #logpkg(__FILE__,__LINE__,'debug',join $/, @candidates);
42 0           @candidates;
43             }
44              
45             sub targets {
46            
47 0     0 0   my %args = @_;
48              
49             # $Audio::Nama::debug2 and print "&targets\n";
50            
51 0           my %versions = get_versions(%args);
52 0 0         if ($versions{bare}) { $versions{1} = $versions{bare};
  0            
53 0           delete $versions{bare};
54             }
55 0     0     logpkg(__FILE__,__LINE__,'debug',sub{"\%versions\n================\n", json_out(\%versions)});
  0            
56 0           \%versions;
57             }
58              
59            
60             sub versions {
61             # $Audio::Nama::debug2 and print "&versions\n";
62 0     0 0   my %args = @_;
63 0           [ sort { $a <=> $b } keys %{ targets(%args)} ]
  0            
  0            
64             }
65             sub last {
66 0     0 0   %args = @_;
67 0           pop @{ versions(%args) }
  0            
68             }
69              
70             1;