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; |