diff options
| author | Paul Buetow <paul@buetow.org> | 2022-04-19 22:54:11 +0100 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2022-04-19 22:54:11 +0100 |
| commit | c6a252b79db57f3480221cf25213fb8c0993ac3a (patch) | |
| tree | b73a2674976c58272c3acda9062d354ed59271ac /katana.raku | |
| parent | 2d6c6743b66935442c16efcda624f954bc176b8c (diff) | |
Tag is in a module
Diffstat (limited to 'katana.raku')
| -rwxr-xr-x | katana.raku | 45 |
1 files changed, 8 insertions, 37 deletions
diff --git a/katana.raku b/katana.raku index c157619..eee5927 100755 --- a/katana.raku +++ b/katana.raku @@ -1,5 +1,9 @@ #!/usr/bin/env raku +use v6.d; +use lib 'lib'; +use Katana::Tag; + sub prefix:<❱>(*@args) { say "❱ {@args}"; my \proc = run @args, :out, :err; @@ -57,41 +61,6 @@ class Image { } } -class Tag { - 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; - } -} - -sub recurse-tags(@open-stack) { - my @close-stack; - for @open-stack -> $tag { - say $tag.open; - say $tag.text if $tag.has-text; - unshift @close-stack, $tag; - } - for @close-stack -> $tag { - say $tag.close; - recurse-tags $tag.succ if $tag.has-succ; - } -} - sub dist-dirs(Str \dist-dir --> List) { dist-dir <<~>> </large /blur /thumb> } sub ensure-directories(Str \dist-dir) { @@ -141,6 +110,8 @@ 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 => ( @@ -149,13 +120,13 @@ multi MAIN( 'xml:lang' => 'en' ); - push @html-elems, Tag.new: name => 'header', + push @html-elems, Tag.new: name => 'head', succ => [Tag.new: name => 'body']; push @html-elems, Tag.new: name => 'title', text => $title; - recurse-tags @html-elems; + recurse-tags $doctype, @html-elems; exit; |
