summaryrefslogtreecommitdiff
path: root/katana.raku
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2022-04-19 22:54:11 +0100
committerPaul Buetow <paul@buetow.org>2022-04-19 22:54:11 +0100
commitc6a252b79db57f3480221cf25213fb8c0993ac3a (patch)
treeb73a2674976c58272c3acda9062d354ed59271ac /katana.raku
parent2d6c6743b66935442c16efcda624f954bc176b8c (diff)
Tag is in a module
Diffstat (limited to 'katana.raku')
-rwxr-xr-xkatana.raku45
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;