read_tags
mangle_for_file_name
quote
+ two_digits
]);
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',
),
read_tags
mangle_for_file_name
quote
+ two_digits
]);
sub flac2mp3 {
join(' ',
$artist,
$album,
- (map { sprintf('%02d', $_) } @{$discnumber}),
- $tracknumber,
+ (map { two_digits($_) } @{$discnumber}),
+ two_digits($tracknumber),
$title,
))
. '.mp3'
use warnings;
use Test::Simple tests => 3;
+
use Test::Differences;
require './tags.pl';
--- /dev/null
+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';
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;