From: Mischa Poslawsky Date: Mon, 26 Oct 2020 21:57:51 +0000 (+0100) Subject: parse-wormedit: open output file for format override X-Git-Url: http://git.shiar.nl/wormy.git/commitdiff_plain/34b24af50cbd517c0fa2fbfc9a2ef0ccdc56443d parse-wormedit: open output file for format override Respect given format, but omit image type if unspecified. --- diff --git a/parse-wormedit b/parse-wormedit index aa22051..77bfc8e 100755 --- a/parse-wormedit +++ b/parse-wormedit @@ -52,24 +52,27 @@ else { die "Unrecognised file type\n"; } +my $format = $opt{format}; # override distinct from image fallback if ($opt{output}) {{ # derive format from file extension - if ($opt{output} =~ /\.(yaml|json|txt)$/) { - $opt{format} //= $1 + $format //= $1 if $opt{output} =~ /\.([^.]+)$/; + + if ($format ~~ [qw{ yaml json txt }]) { + # redirect standard output to given file + open my $output, '>', $opt{output} + or die "Cannot output to '$opt{output}': $!"; + select $output; } else { # images are written directly to file - last; } - - # redirect standard output to given file - open my $output, '>', $opt{output} - or die "Cannot output to '$opt{output}': $!"; - select $output; }} +else { + $format //= 'txt'; +} # output with user-preferred formatting -given ($opt{format}) { +given ($format) { when ('json') { require JSON; say JSON->new->encode($data); @@ -166,13 +169,13 @@ default { my $img = Games::Wormy::Render->composite( map { $data->{levels}->[$_] } @request ) or die "empty result for levels\n"; - if ($opt{format} ~~ 'pbm') { + if ($format ~~ 'pbm') { $img = $img->to_paletted({make_colors => 'mono'}); $opt{format} = 'pnm'; } $img->write( $opt{output} ? (file => $opt{output}) : (fh => \*STDOUT), - type => $opt{format} // 'pnm', + type => $opt{format}, ) or die $img->errstr; } }