diff options
| -rwxr-xr-x | katana.raku | 27 | ||||
| -rw-r--r-- | lib/Katana/HTML/Generate.rakumod | 19 | ||||
| -rw-r--r-- | lib/Katana/HTML/Tag.rakumod | 24 | ||||
| -rw-r--r-- | lib/Katana/Image/Elem.rakumod | 59 |
4 files changed, 31 insertions, 98 deletions
diff --git a/katana.raku b/katana.raku index 59202a8..25c5635 100755 --- a/katana.raku +++ b/katana.raku @@ -4,7 +4,7 @@ use v6.d; use lib 'lib'; use Katana::Exec::Command; -use Katana::HTML::Generate; +use Katana::HTML::Page; use Katana::HTML::Tag; use Katana::Image::Elem; use Katana::Walk::Dir; @@ -26,25 +26,10 @@ multi MAIN( Int :$degree = 4, #= Degree of parallelism ) { - my $doctype = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; - - my @html-elems; - push @html-elems, Tag.new: name => 'html', - params => ( - xmlns => 'http://www.w3.org/1999/xhtml', - lang => 'en', - 'xml:lang' => 'en' - ); - - push @html-elems, Tag.new: name => 'head', - succ => [Tag.new: name => 'body']; - - push @html-elems, Tag.new: name => 'title', - text => $title; - - generate-from-tags $doctype, @html-elems; - - + my @body-tags = (Tag.new: :name<hr>, :is-mono(True)); + my Katana::HTML::Page \body .= new: :@body-tags, :$title; + body.generate; + exit 0; my @images = dir($in-dir, test => { "$in-dir/$_".IO.f }).map:{ Elem.new: source => $_, :$dist-dir }; @@ -55,7 +40,7 @@ multi MAIN( dir-make-mr-proper $dist-dir if $mr-proper; dir-ensure $dist-dir; - @images.hyper(:$degree).map:{ + @images.race(:$degree).map: { .get-camera-model; .generate: :$thumb-geometry, :$bg-blur; }; diff --git a/lib/Katana/HTML/Generate.rakumod b/lib/Katana/HTML/Generate.rakumod index fb020b4..74e1c4b 100644 --- a/lib/Katana/HTML/Generate.rakumod +++ b/lib/Katana/HTML/Generate.rakumod @@ -1,22 +1,3 @@ use v6.d; unit module Katana::HTML::Generate:api<1>; - -multi sub generate-from-tags(Str $doctype, @tags) is export { - say $doctype; - generate-from-tags @tags; -} - -multi sub generate-from-tags(@tags) is export { - my @sgat; # tags spelled in reverse. - for @tags -> $tag { - say $tag.open; - say $tag.text if $tag.has-text; - unshift @sgat, $tag; - } - for @sgat -> $tag { - say $tag.close; - generate-from-tags $tag.succ if $tag.has-succ; - } -} - diff --git a/lib/Katana/HTML/Tag.rakumod b/lib/Katana/HTML/Tag.rakumod deleted file mode 100644 index 772a577..0000000 --- a/lib/Katana/HTML/Tag.rakumod +++ /dev/null @@ -1,24 +0,0 @@ -use v6.d; -unit module Katana::HTML:api<1>; - -class Tag is export { - has Str $.name; - has Str $.text; - has Str %.params; - has Tag @.succ; - - method has-text returns Bool { defined $.text } - method has-succ returns Bool { defined $.succ } - - method open returns Str { "<{$.name}{self.params}>" } - method close returns Str { "</{$.name}>" } - - method params returns Str { - return '' unless defined %!params; - my @params; - for %!params.kv -> $key, $val { - push @params, " $key='$val'"; - } - return @params.join; - } -} diff --git a/lib/Katana/Image/Elem.rakumod b/lib/Katana/Image/Elem.rakumod index 3109e82..4bd7e15 100644 --- a/lib/Katana/Image/Elem.rakumod +++ b/lib/Katana/Image/Elem.rakumod @@ -1,43 +1,34 @@ use v6.d; - use Katana::Exec::Command; +unit class Katana::Image::Elem:api<1> is export; -unit module Katana::Image:api<1>; - -class Elem is export { - has Str $.basename; - has Str $!source; - has Str $!dist-dir; - has Str $.camera; - - submethod BUILD(IO::Path :$source, Str :$dist-dir) { - $!basename = $source.basename; - $!source = $source.path; - $!dist-dir = $dist-dir; - } +has Str $.basename; +has Str $!source; +has Str $!dist-dir; +has Str $.camera; - method generate(Int :$thumb-geometry, Str :$bg-blur) { - my $thumb = "$!dist-dir/thumb/{$.basename}"; - ⁉ [|<convert -auto-orient -geometry>, $thumb-geometry, $!source, $thumb]; - - my $blur = "$!dist-dir/blur/{$.basename}"; - ⁉ [|<convert -flip -geometry>, $thumb-geometry/4, '-blur', $bg-blur, $thumb, $blur]; +submethod BUILD(IO::Path :$source, Str :$dist-dir) { + $!basename = $source.basename; + $!source = $source.path; + $!dist-dir = $dist-dir; +} - my $large = "$!dist-dir/large/{$.basename}"; - ⁉ ['cp', $!source, $large]; - } +method generate(Int :$thumb-geometry, Str :$bg-blur) { + my $thumb = "$!dist-dir/thumb/{$.basename}"; + ⁉ [|<convert -auto-orient -geometry>, $thumb-geometry, $!source, $thumb]; - method get-camera-model { - my %exif = read-exif-info "$!dist-dir/large/{$.basename}"; - my $make = %exif<Make> ?? %exif<Make> !! ''; - my $model = %exif{'Camera Model Name'} ?? %exif{'Camera Model Name'} !! ''; - $model ~~ s/$make //; # Don't stotter - $model = 'Unknown camera' if $model eq ''; - $!camera = "$make $model".trim; - } + my $blur = "$!dist-dir/blur/{$.basename}"; + ⁉ [|<convert -flip -geometry>, $thumb-geometry/4, '-blur', $bg-blur, $thumb, $blur]; - method tag(Str $class) { - "<img class='{$class}' src='./{$class}/{$.basename}' />" - } + my $large = "$!dist-dir/large/{$.basename}"; + ⁉ ['cp', $!source, $large]; } +method get-camera-model returns Str { + my %exif = read-exif-info "$!dist-dir/large/{$.basename}"; + my $make = %exif<Make> ?? %exif<Make> !! ''; + my $model = %exif{'Camera Model Name'} ?? %exif{'Camera Model Name'} !! ''; + $model ~~ s/$make //; # Don't stotter + $model = 'Unknown camera' if $model eq ''; + $!camera = "$make $model".trim; +} |
