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