From a1a881bde53bc5eddcd7be4c52a9ce8053ca9c53 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Wed, 28 Dec 2016 15:56:23 +0100 Subject: code cleanup --- lib/App/Dthumb.pm | 33 +++++++-------------------------- lib/App/Dthumb/Data.pm.PL | 11 +++++------ share/folder-blue.png | Bin 0 -> 3233 bytes t/20-app-dthumb.t | 6 +----- 4 files changed, 13 insertions(+), 37 deletions(-) create mode 100644 share/folder-blue.png diff --git a/lib/App/Dthumb.pm b/lib/App/Dthumb.pm index 5e6aabe..b6024a6 100755 --- a/lib/App/Dthumb.pm +++ b/lib/App/Dthumb.pm @@ -2,11 +2,11 @@ package App::Dthumb; use strict; use warnings; -use autodie; use 5.010; use App::Dthumb::Data; use Cwd; +use File::Slurp qw(read_dir write_file); use Image::Imlib2; our $VERSION = '0.2'; @@ -28,13 +28,6 @@ sub new { $conf{dir_data} = "$conf{dir_images}/.dthumb"; $conf{dir_thumbs} = "$conf{dir_images}/.thumbs"; - # helpers to directly pass GetOptions results - $conf{lightbox} //= ( - ( - $conf{'no-lightbox'} - or $conf{shadowbox} - ) ? 0 : 1 - ); $conf{names} //= ( $conf{'no-names'} ? 0 : 1 ); $ref->{config} = \%conf; @@ -57,28 +50,22 @@ sub read_directories { my $thumbdir = $self->{config}->{dir_thumbs}; my $imgdir = $self->{config}->{dir_images}; - my $dh; my ( @files, @old_thumbs ); - opendir( $dh, $imgdir ); - - for my $file ( readdir($dh) ) { + for my $file ( read_dir($imgdir) ) { if ( -f "${imgdir}/${file}" and $file =~ qr{ [.] (png | jp e? g) $ }iox ) { push( @files, $file ); } } - closedir($dh); if ( -d $thumbdir ) { - opendir( $dh, $thumbdir ); - for my $file ( readdir($dh) ) { + for my $file ( read_dir($thumbdir) ) { if ( $file =~ qr{^ [^.] }ox and not -f "${imgdir}/${file}" ) { push( @old_thumbs, $file ); } } - closedir($dh); } @{ $self->{files} } = sort { lc($a) cmp lc($b) } @files; @@ -94,18 +81,14 @@ sub create_files { my $datadir = $self->{config}->{dir_data}; my @files = $self->{data}->list_archived; - for my $dir ( $thumbdir, $datadir, "${datadir}/css", - "${datadir}/js" ) - { + for my $dir ( $thumbdir, $datadir, "${datadir}/css", "${datadir}/js" ) { if ( not -d $dir ) { mkdir($dir); } } for my $file (@files) { - open( my $fh, '>', "${datadir}/${file}" ); - print {$fh} $self->{data}->get($file); - close($fh); + write_file( "${datadir}/${file}", $self->{data}->get($file) ); } return; @@ -138,7 +121,7 @@ sub create_thumbnail_html { $self->{html} .= "
\n"; $self->{html} .= sprintf( - "\t\n" +"\t\n" . "\t\t\"%s\"\n", ($file) x 2, $self->{config}->{dir_thumbs}, @@ -195,9 +178,7 @@ sub write_out_html { $self->{html} .= $self->{data}->get('html_end.dthumb'); - open( my $fh, '>', $self->{config}->{file_index} ); - print {$fh} $self->{html}; - close($fh); + write_file( $self->{config}->{file_index}, $self->{html} ); return; } diff --git a/lib/App/Dthumb/Data.pm.PL b/lib/App/Dthumb/Data.pm.PL index 32ba162..ca435bf 100644 --- a/lib/App/Dthumb/Data.pm.PL +++ b/lib/App/Dthumb/Data.pm.PL @@ -2,12 +2,13 @@ use strict; use warnings; use 5.010; -use File::Slurp qw(read_dir); +use Carp qw(carp croak); +use File::Slurp qw(read_dir read_file); use MIME::Base64 qw(encode_base64); my ($out_file) = @ARGV; -open( my $out_fh, '>', $out_file ); +open( my $out_fh, '>', $out_file ) or croak("Cannot open ${out_file}: $!"); print {$out_fh} ; @@ -22,9 +23,7 @@ for my $file ( next; } - open( my $fh, '<', $file ); - my $content = do { local $/ = undef; <$fh> }; - close($fh); + my $content = read_file($file); if ( $file =~ qr{ [.] (png | gif) $ }ox ) { $content = encode_base64($content); @@ -34,7 +33,7 @@ for my $file ( printf {$out_fh} ( "______[ %s ]______\n%s\n", $file, $content, ); } -close($out_fh); +close($out_fh) or carp("Cannot close ${out_file}: $!"); __DATA__ package App::Dthumb::Data; diff --git a/share/folder-blue.png b/share/folder-blue.png new file mode 100644 index 0000000..b083196 Binary files /dev/null and b/share/folder-blue.png differ diff --git a/t/20-app-dthumb.t b/t/20-app-dthumb.t index 37e72a0..9be60de 100755 --- a/t/20-app-dthumb.t +++ b/t/20-app-dthumb.t @@ -4,7 +4,7 @@ use warnings; use 5.010; use autodie; -use Test::More tests => 16; +use Test::More tests => 14; use_ok('App::Dthumb'); @@ -20,16 +20,12 @@ is($dthumb->{config}->{dir_thumbs}, './.thumbs', 'Thumbnail directory is dthumbs'); is($dthumb->{config}->{file_index}, 'index.html', 'index is index.html'); -is($dthumb->{config}->{lightbox}, 1, 'Lightbox enabled'); is($dthumb->{config}->{names} , 1, 'Show image names'); is($dthumb->{config}->{quality} , 75, 'Default quality'); is($dthumb->{config}->{recreate}, 0, 'Do not recreate'); is($dthumb->{config}->{size} , 200, 'Default size'); is($dthumb->{config}->{spacing} , 1.1, 'Default spacing'); -$dthumb = App::Dthumb->new('no-lightbox' => 1); -is($dthumb->{config}->{lightbox}, 0, 'Lightbox disabled'); - $dthumb = App::Dthumb->new('no-names' => 1); is($dthumb->{config}->{names}, 0, 'Image names disabled'); -- cgit v1.2.3