diff --git a/cmd/html2gomponents/main.go b/cmd/html2gomponents/main.go index 18897ba..65404a7 100644 --- a/cmd/html2gomponents/main.go +++ b/cmd/html2gomponents/main.go @@ -69,12 +69,11 @@ func start(r io.Reader, w2 io.Writer) error { w.Write("package html\n") w.Write("\n") w.Write("import (\n") - w.Write("\t. \"maragu.dev/gomponents\"\n") - w.Write("\t. \"maragu.dev/gomponents/html\"\n") + w.Write(". \"maragu.dev/gomponents\"\n") + w.Write(". \"maragu.dev/gomponents/html\"\n") w.Write(")\n") w.Write("\n") w.Write("func Component() Node {\n") - w.Write("\treturn ") z := html.NewTokenizer(r) @@ -89,7 +88,7 @@ loop: if err := z.Err(); err != nil { if errors.Is(err, io.EOF) { if !hasContent { - w.Write("nil") + w.Write("return nil") } break loop } @@ -97,18 +96,26 @@ loop: } case html.TextToken: - text := string(z.Text()) - trimmed := strings.TrimSpace(text) - if trimmed == "" { + text := strings.TrimSpace(string(z.Text())) + if text == "" { continue } + + if !hasContent { + w.Write("return ") + } + hasContent = true - w.Write(fmt.Sprintf("Text(%q)", trimmed)) + w.Write(fmt.Sprintf("Text(%q)", text)) if depth > 0 { w.Write(",") } case html.StartTagToken, html.SelfClosingTagToken: + if !hasContent { + w.Write("return ") + } + if hasContent { w.Write("\n") } @@ -127,12 +134,11 @@ loop: for { key, val, moreAttr := z.TagAttr() - name := string(key) if attr, ok := attrs[string(key)]; ok { w.Write(attr) } else { - w.Write(strings.ToTitle(string(name[0]))) - w.Write(name[1:]) + w.Write(strings.ToTitle(string(key[0]))) + w.Write(string(key[1:])) } w.Write("(") @@ -166,7 +172,7 @@ loop: } case html.CommentToken: - // TODO Ignore for now + w.Write("// " + string(z.Text()) + "\n") case html.DoctypeToken: // TODO Ignore for now diff --git a/cmd/html2gomponents/main_test.go b/cmd/html2gomponents/main_test.go index 9aa8a8c..64e3161 100644 --- a/cmd/html2gomponents/main_test.go +++ b/cmd/html2gomponents/main_test.go @@ -30,7 +30,7 @@ func TestStart(t *testing.T) { t.Fatal(err) } if out != w.String() { - t.Fatalf("expected %q, got %q", out, w.String()) + t.Fatalf("expected %v, got %v", out, w.String()) } }) } diff --git a/cmd/html2gomponents/testdata/_out/comment.go b/cmd/html2gomponents/testdata/_out/comment.go index 88026ea..204238b 100644 --- a/cmd/html2gomponents/testdata/_out/comment.go +++ b/cmd/html2gomponents/testdata/_out/comment.go @@ -6,5 +6,6 @@ import ( ) func Component() Node { - return nil + // halløj + return Div() } diff --git a/cmd/html2gomponents/testdata/comment.html b/cmd/html2gomponents/testdata/comment.html index 79bdb0f..a8c7025 100644 --- a/cmd/html2gomponents/testdata/comment.html +++ b/cmd/html2gomponents/testdata/comment.html @@ -1 +1,2 @@ +