diff options
author | jturtle <jturtl@pm.me> | 2023-09-30 22:13:14 +0000 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2023-10-02 00:14:21 +0200 |
commit | 56f9526181c725edc0a1ede50fc86443d080c7a5 (patch) | |
tree | 4a454492d8b0e31474bb67c3a191403f5cdd49d5 | |
parent | 1da33201a9a022673bad5fbff2d4636049240808 (diff) |
Fix class/attribute mixup bug
There's a bug in the current version of GSP where an element like this:
p .class attribute="value" {-}
would be transpiled as this:
<p class="value" attribute="value"></p>
The `classes` slice in `func printAttrs` (`formatter.go`, line 50) was
the cause. I fixed it by making a deep copy of the `attrs` slice. I'm not
a Go programmer, there might be a nicer way to make a deep copy of a slice.
But it does, indeed, work.
P.S. thanks for making this, writing HTML by hand is now slightly less
painful!
-rw-r--r-- | formatter/formatter.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/formatter/formatter.go b/formatter/formatter.go index 6249c0a..7ac41a6 100644 --- a/formatter/formatter.go +++ b/formatter/formatter.go @@ -48,14 +48,17 @@ func PrintAst(ast parser.AstNode) { } func printAttrs(attrs []parser.Attr) { - classes := attrs + classes := make([]parser.Attr, len(attrs), cap(attrs)) + copy(classes, attrs) classes = slices.DeleteFunc(classes, func(a parser.Attr) bool { return a.Key != "class" }) + attrs = slices.DeleteFunc(attrs, func(a parser.Attr) bool { return a.Key == "class" }) + if len(classes) > 0 { fmt.Print(" class=\"") for i, a := range classes { |