From c6a252b79db57f3480221cf25213fb8c0993ac3a Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 19 Apr 2022 22:54:11 +0100 Subject: Tag is in a module --- lib/Katana/Tag.rakumod | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/Katana/Tag.rakumod (limited to 'lib') diff --git a/lib/Katana/Tag.rakumod b/lib/Katana/Tag.rakumod new file mode 100644 index 0000000..c1b6204 --- /dev/null +++ b/lib/Katana/Tag.rakumod @@ -0,0 +1,44 @@ +use v6.d; + +unit module Katana:api<0>; + +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 { "" } + + method params returns Str { + return '' unless defined %!params; + my @params; + for %!params.kv -> $key, $val { + push @params, " $key='$val'"; + } + return @params.join; + } +} + +multi sub recurse-tags(Str $doctype, @open-stack) is export { + say $doctype; + recurse-tags @open-stack; +} + +multi sub recurse-tags(@open-stack) is export { + 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; + } +} + -- cgit v1.2.3