]> diplodocus.org Git - flac-archive/commitdiff
Fix single-digit track numbers in flac2mp3.
authorEric Gillespie <epg@pretzelnet.org>
Sun, 6 Mar 2022 22:47:14 +0000 (16:47 -0600)
committerEric Gillespie <epg@pretzelnet.org>
Sun, 6 Mar 2022 22:47:14 +0000 (16:47 -0600)
fa-encode
flac2mp3
t/read_tags.t
t/two_digits.t [new file with mode: 0644]
tags.pl

index e1d3a2c..1401775 100755 (executable)
--- a/fa-encode
+++ b/fa-encode
@@ -28,6 +28,7 @@ epg::flac::archive::tags->import(
         read_tags
         mangle_for_file_name
         quote
+        two_digits
     ]);
 
 sub main {
@@ -82,11 +83,11 @@ sub main {
             $track->{DISCNUMBER} = \@discnumber;
         }
         my $title = join(' ', @{$track->{TITLE}});
-        my $tracknum_s = sprintf('%02d', $tracknum);
+        my $tracknum_s = two_digits($tracknum);
         my $fn = join('/',
                       $dir,
                       join('_',
-                           (map { sprintf('%02d', $_) } @discnumber),
+                           (map { two_digits($_) } @discnumber),
                            $tracknum_s,
                            mangle_for_file_name($title) . '.flac',
                       ),
index 5115b72..b4126e2 100755 (executable)
--- a/flac2mp3
+++ b/flac2mp3
@@ -62,6 +62,7 @@ epg::flac::archive::tags->import(
         read_tags
         mangle_for_file_name
         quote
+        two_digits
     ]);
 
 sub flac2mp3 {
@@ -116,8 +117,8 @@ sub flac2mp3 {
                      join(' ',
                           $artist,
                           $album,
-                          (map { sprintf('%02d', $_) } @{$discnumber}),
-                          $tracknumber,
+                          (map { two_digits($_) } @{$discnumber}),
+                          two_digits($tracknumber),
                           $title,
                      ))
                  . '.mp3'
index 653f35a..42a640b 100644 (file)
@@ -2,6 +2,7 @@ use v5.12;
 use warnings;
 
 use Test::Simple tests => 3;
+
 use Test::Differences;
 
 require './tags.pl';
diff --git a/t/two_digits.t b/t/two_digits.t
new file mode 100644 (file)
index 0000000..dcc0939
--- /dev/null
@@ -0,0 +1,21 @@
+use v5.12;
+use warnings;
+
+use Test::More tests => 5;
+
+use Test::Exception;
+
+require './tags.pl';
+epg::flac::archive::tags->import('two_digits');
+
+is two_digits(0), '00',
+    '0 -> 00';
+
+is two_digits(1), '01',
+    '1 -> 01';
+
+throws_ok { two_digits(111) } qr/111 won't fit into two digits/;
+
+throws_ok { two_digits(-31) } qr/-31 won't fit into two digits/;
+
+is two_digits(''), '00';
diff --git a/tags.pl b/tags.pl
index 25c7d3a..2df6458 100644 (file)
--- a/tags.pl
+++ b/tags.pl
@@ -57,8 +57,18 @@ our @EXPORT_OK = qw[
     read_tags
     mangle_for_file_name
     quote
+    two_digits
 ];
 
+sub two_digits {
+    my $n = shift;
+    my  $s = sprintf('%02d', $n);
+    if (length($s) != 2) {
+        die("$n won't fit into two digits")
+    }
+    $s
+}
+
 sub read_tags {
     my $fh = shift;
     my %album;