From f321384e66551ea130224c5bbd70f7939b47f598 Mon Sep 17 00:00:00 2001 From: Joe Davidson Date: Fri, 23 Jun 2023 10:04:11 +0100 Subject: [PATCH] feat: improve rendering performance by combining sequential string constant writes, fixes #96 --- benchmarks/templ/template_templ.go | 112 +--- cmd/templ/lspcmd/httpdebug/list_templ.go | 200 +----- .../visualize/sourcemapvisualisation_templ.go | 163 +---- examples/blog/posts_templ.go | 242 +------ examples/counter-basic/components_templ.go | 428 +------------ .../counter/components/components_templ.go | 588 +----------------- examples/hello-world-ssr/hello_templ.go | 3 - examples/hello-world-static/hello_templ.go | 3 - examples/static-generator/blog_templ.go | 99 +-- .../components/templsyntax_templ.go | 4 - generator/generator.go | 146 +---- generator/generator_test.go | 4 +- generator/rangewriter.go | 69 +- generator/test-a-href/template_templ.go | 59 +- .../test-attribute-escaping/template_templ.go | 30 +- generator/test-call/template_templ.go | 73 +-- .../test-complex-attributes/template_templ.go | 130 +--- generator/test-css-usage/template_templ.go | 121 +--- generator/test-doctype/template_templ.go | 96 +-- .../test-element-attributes/template_templ.go | 59 +- generator/test-elseif/template_templ.go | 27 +- generator/test-for/template_templ.go | 3 - generator/test-html/template_templ.go | 112 +--- generator/test-if/template_templ.go | 3 - generator/test-ifelse/template_templ.go | 3 - generator/test-import/template_templ.go | 20 +- generator/test-raw-elements/template_templ.go | 66 +- generator/test-script-usage/template_templ.go | 53 +- generator/test-string/template_templ.go | 24 +- generator/test-switch/template_templ.go | 5 +- .../test-switchdefault/template_templ.go | 5 +- .../test-templ-element/template_templ.go | 36 +- .../test-text-whitespace/template_templ.go | 40 +- generator/test-text/template_templ.go | 28 +- generator/test-void/template_templ.go | 27 +- storybook/_example/templates_templ.go | 50 +- turbo/stream_templ.go | 72 +-- 37 files changed, 258 insertions(+), 2945 deletions(-) diff --git a/benchmarks/templ/template_templ.go b/benchmarks/templ/template_templ.go index 24caa45c8..59fc87995 100644 --- a/benchmarks/templ/template_templ.go +++ b/benchmarks/templ/template_templ.go @@ -22,45 +22,16 @@ func Render(p Person) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // StringExpression var var_2 string = p.Name _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("\">
") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Text var_3 := `email:` _, err = templBuffer.WriteString(var_3) if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_5 string = p.Email _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString(">
") if err != nil { return err } diff --git a/cmd/templ/lspcmd/httpdebug/list_templ.go b/cmd/templ/lspcmd/httpdebug/list_templ.go index 6376f6d5b..804dbe863 100644 --- a/cmd/templ/lspcmd/httpdebug/list_templ.go +++ b/cmd/templ/lspcmd/httpdebug/list_templ.go @@ -22,109 +22,30 @@ func list(uris []string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // For for _, uri := range uris { - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/cmd/templ/visualize/sourcemapvisualisation_templ.go b/cmd/templ/visualize/sourcemapvisualisation_templ.go index 52895beb1..7179bc260 100644 --- a/cmd/templ/visualize/sourcemapvisualisation_templ.go +++ b/cmd/templ/visualize/sourcemapvisualisation_templ.go @@ -55,52 +55,24 @@ func combine(templFileName string, left, right templ.Component) templ.Component var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("<head>") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("<title>") - if err != nil { - return err - } - // StringExpression var var_2 string = templFileName _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - // Text var_3 := `- Source Map Visualisation` _, err = templBuffer.WriteString(var_3) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // StringExpression var var_5 string = templFileName _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { @@ -137,23 +94,12 @@ func combine(templFileName string, left, right templ.Component) templ.Component if err != nil { return err } - // Element (standard) - // Element CSS var var_6 = []any{templ.Classes(row())} err = templ.RenderCSSItems(ctx, templBuffer, var_6...) if err != nil { return err } - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - // Element CSS var var_7 = []any{templ.Classes(column(), code())} err = templ.RenderCSSItems(ctx, templBuffer, var_7...) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // CallTemplate err = left.Render(ctx, templBuffer) if err != nil { return err @@ -210,23 +136,12 @@ func combine(templFileName string, left, right templ.Component) templ.Component if err != nil { return err } - // Element (standard) - // Element CSS var var_8 = []any{templ.Classes(column(), code())} err = templ.RenderCSSItems(ctx, templBuffer, var_8...) if err != nil { return err } - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // CallTemplate err = right.Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } @@ -313,28 +211,16 @@ func mappedCharacter(s string, sourceID, targetID string) templ.Component { var_9 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_10 = []any{templ.Classes(templ.Class("mapped"), templ.Class(sourceID), templ.Class(targetID))} err = templ.RenderCSSItems(ctx, templBuffer, var_10...) if err != nil { return err } - // Element Script err = templ.RenderScriptItems(ctx, templBuffer, highlight(sourceID, targetID), removeHighlight(sourceID, targetID)) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // StringExpression var var_13 string = s _, err = templBuffer.WriteString(templ.EscapeString(var_13)) if err != nil { diff --git a/examples/blog/posts_templ.go b/examples/blog/posts_templ.go index b3a1ada1b..6afafbac3 100644 --- a/examples/blog/posts_templ.go +++ b/examples/blog/posts_templ.go @@ -9,7 +9,6 @@ import "context" import "io" import "bytes" -// GoExpression import "fmt" import "time" @@ -26,36 +25,16 @@ func headerTemplate(name string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element Attributes - _, err = templBuffer.WriteString(" data-testid=\"headerTemplate\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // StringExpression var var_2 string = name _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("

") if err != nil { return err } @@ -79,42 +58,21 @@ func footerTemplate() templ.Component { var_3 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_4 := `© ` _, err = templBuffer.WriteString(var_4) if err != nil { return err } - // StringExpression var var_5 string = fmt.Sprintf("%d", time.Now().Year()) _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") if err != nil { return err } @@ -138,96 +96,25 @@ func navTemplate() templ.Component { var_6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } @@ -251,69 +138,39 @@ func layout(name string) templ.Component { var_9 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("<html><head><title>") if err != nil { return err } - // StringExpression var var_10 string = name _, err = templBuffer.WriteString(templ.EscapeString(var_10)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // TemplElement err = headerTemplate(name).Render(ctx, templBuffer) if err != nil { return err } - // TemplElement err = navTemplate().Render(ctx, templBuffer) if err != nil { return err } - // Element (standard) _, err = templBuffer.WriteString("
") if err != nil { return err } - // Children err = var_9.Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // TemplElement err = footerTemplate().Render(ctx, templBuffer) if err != nil { return err @@ -342,85 +199,30 @@ func postsTemplate(posts []Post) templ.Component { var_11 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // For for _, p := range posts { - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // StringExpression var var_12 string = p.Name _, err = templBuffer.WriteString(templ.EscapeString(var_12)) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - // Element Attributes - _, err = templBuffer.WriteString(" data-testid=\"postsTemplatePostAuthor\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_13 string = p.Author _, err = templBuffer.WriteString(templ.EscapeString(var_13)) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } @@ -449,28 +251,16 @@ func home() templ.Component { var_14 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // TemplElement var_15 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_16 := `Welcome to my website.` _, err = templBuffer.WriteString(var_16) if err != nil { @@ -509,14 +299,12 @@ func posts(posts []Post) templ.Component { var_17 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // TemplElement var_18 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // TemplElement err = postsTemplate(posts).Render(ctx, templBuffer) if err != nil { return err diff --git a/examples/counter-basic/components_templ.go b/examples/counter-basic/components_templ.go index 4f80f8723..ec074f562 100644 --- a/examples/counter-basic/components_templ.go +++ b/examples/counter-basic/components_templ.go @@ -9,7 +9,6 @@ import "context" import "io" import "bytes" -// GoExpression import "strconv" func counts(global, user int) templ.Component { @@ -25,39 +24,29 @@ func counts(global, user int) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_2 := `Global: ` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - // StringExpression var var_3 string = strconv.Itoa(global) _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_4 := `User: ` _, err = templBuffer.WriteString(var_4) if err != nil { return err } - // StringExpression var var_5 string = strconv.Itoa(user) _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { @@ -87,107 +76,25 @@ func form() templ.Component { var_6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
") if err != nil { return err } @@ -211,356 +118,37 @@ func page(global, user int) templ.Component { var_9 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" charset=\"UTF-8\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" name=\"viewport\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" content=\"width=device-width, initial-scale=1.0\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("<title>") - if err != nil { - return err - } - // Text var_10 := `Counts` _, err = templBuffer.WriteString(var_10) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("

") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Text var_11 := `Counts` _, err = templBuffer.WriteString(var_11) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - // Element Attributes - _, err = templBuffer.WriteString(" class=\"section\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // TemplElement err = counts(global, user).Render(ctx, templBuffer) if err != nil { return err } - // TemplElement err = form().Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/examples/counter/components/components_templ.go b/examples/counter/components/components_templ.go index ac59f0fa8..fcaa20b8c 100644 --- a/examples/counter/components/components_templ.go +++ b/examples/counter/components/components_templ.go @@ -10,7 +10,6 @@ import "io" import "bytes" import "strings" -// GoExpression import "strconv" func border() templ.CSSClass { @@ -40,71 +39,16 @@ func counts(global, session int) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - // Element Attributes - _, err = templBuffer.WriteString(" id=\"countsForm\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" action=\"/\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" method=\"POST\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" hx-post=\"/\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" hx-select=\"#countsForm\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" hx-swap=\"outerHTML\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - // Element CSS var var_2 = []any{"column", "has-text-centered", "is-primary", border} err = templ.RenderCSSItems(ctx, templBuffer, var_2...) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // StringExpression var var_3 string = strconv.Itoa(global) _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Text var_4 := `Global` _, err = templBuffer.WriteString(var_4) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // Element (standard) - // Element CSS var var_6 = []any{"column", "has-text-centered", border} err = templ.RenderCSSItems(ctx, templBuffer, var_6...) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">

") if err != nil { return err } - // StringExpression var var_7 string = strconv.Itoa(session) _, err = templBuffer.WriteString(templ.EscapeString(var_7)) if err != nil { return err } - _, err = templBuffer.WriteString("

") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Text var_8 := `Session` _, err = templBuffer.WriteString(var_8) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } @@ -374,375 +151,42 @@ func Page(global, session int) templ.Component { var_10 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" charset=\"UTF-8\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" name=\"viewport\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" content=\"width=device-width, initial-scale=1.0\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("<title>") - if err != nil { - return err - } - // Text var_11 := `Counts` _, err = templBuffer.WriteString(var_11) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("

") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Text var_13 := `Counts` _, err = templBuffer.WriteString(var_13) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // TemplElement err = counts(global, session).Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/examples/hello-world-ssr/hello_templ.go b/examples/hello-world-ssr/hello_templ.go index 0870d3261..ab4f1fab2 100644 --- a/examples/hello-world-ssr/hello_templ.go +++ b/examples/hello-world-ssr/hello_templ.go @@ -22,18 +22,15 @@ func hello(name string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_2 := `Hello, ` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - // StringExpression var var_3 string = name _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { diff --git a/examples/hello-world-static/hello_templ.go b/examples/hello-world-static/hello_templ.go index 0870d3261..ab4f1fab2 100644 --- a/examples/hello-world-static/hello_templ.go +++ b/examples/hello-world-static/hello_templ.go @@ -22,18 +22,15 @@ func hello(name string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
") if err != nil { return err } - // Text var_2 := `Hello, ` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - // StringExpression var var_3 string = name _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { diff --git a/examples/static-generator/blog_templ.go b/examples/static-generator/blog_templ.go index c6bb75a9a..8dfe202d1 100644 --- a/examples/static-generator/blog_templ.go +++ b/examples/static-generator/blog_templ.go @@ -9,7 +9,6 @@ import "context" import "io" import "bytes" -// GoExpression import "path" import "github.com/gosimple/slug" @@ -26,27 +25,16 @@ func headerComponent(title string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("<title>") - if err != nil { - return err - } - // StringExpression var var_2 string = title _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } @@ -70,50 +58,24 @@ func contentComponent(title string, body templ.Component) templ.Component { var_3 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // StringExpression var var_4 string = title _, err = templBuffer.WriteString(templ.EscapeString(var_4)) if err != nil { return err } - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // CallTemplate err = body.Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
") if err != nil { return err } @@ -137,17 +99,14 @@ func contentPage(title string, body templ.Component) templ.Component { var_5 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("") if err != nil { return err } - // TemplElement err = headerComponent(title).Render(ctx, templBuffer) if err != nil { return err } - // TemplElement err = contentComponent(title, body).Render(ctx, templBuffer) if err != nil { return err @@ -176,27 +135,18 @@ func indexPage(posts []Post) templ.Component { var_6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("") if err != nil { return err } - // TemplElement err = headerComponent("My Blog").Render(ctx, templBuffer) if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("

") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

") - if err != nil { - return err - } - // Text var_7 := `My Blog` _, err = templBuffer.WriteString(var_7) if err != nil { @@ -206,24 +156,8 @@ func indexPage(posts []Post) templ.Component { if err != nil { return err } - // For for _, post := range posts { - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // StringExpression var var_9 string = post.Title _, err = templBuffer.WriteString(templ.EscapeString(var_9)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("

") if err != nil { return err } } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/examples/syntax-and-usage/components/templsyntax_templ.go b/examples/syntax-and-usage/components/templsyntax_templ.go index 6e741c490..abf5e7765 100644 --- a/examples/syntax-and-usage/components/templsyntax_templ.go +++ b/examples/syntax-and-usage/components/templsyntax_templ.go @@ -22,19 +22,15 @@ func list(items []string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
    ") if err != nil { return err } - // For for _, item := range items { - // Element (standard) _, err = templBuffer.WriteString("
  1. ") if err != nil { return err } - // StringExpression var var_2 string = item _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { diff --git a/generator/generator.go b/generator/generator.go index de8a04d10..c486fdbd1 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -240,9 +240,6 @@ func (g *generator) writeCSS(n parser.CSSTemplate) error { } func (g *generator) writeGoExpression(n parser.GoExpression) (err error) { - if _, err = g.w.WriteIndent(0, "// GoExpression\n"); err != nil { - return err - } r, err := g.w.Write(n.Expression.Value) if err != nil { return err @@ -495,22 +492,13 @@ func (g *generator) writeNode(indentLevel int, current parser.Node) (err error) } func (g *generator) writeDocType(indentLevel int, n parser.DocType) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// DocType\n"); err != nil { - return err - } - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf("_, err = templBuffer.WriteString(``)\n", n.Value)); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf("", n.Value)); err != nil { return err } return nil } func (g *generator) writeIfExpression(indentLevel int, n parser.IfExpression) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// If\n"); err != nil { - return err - } var r parser.Range // if if _, err = g.w.WriteIndent(indentLevel, `if `); err != nil { @@ -575,9 +563,6 @@ func (g *generator) writeIfExpression(indentLevel int, n parser.IfExpression) (e } func (g *generator) writeSwitchExpression(indentLevel int, n parser.SwitchExpression) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Switch\n"); err != nil { - return err - } var r parser.Range // switch if _, err = g.w.WriteIndent(indentLevel, `switch `); err != nil { @@ -616,9 +601,6 @@ func (g *generator) writeSwitchExpression(indentLevel int, n parser.SwitchExpres } func (g *generator) writeChildrenExpression(indentLevel int) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Children\n"); err != nil { - return err - } if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf("err = %s.Render(ctx, templBuffer)\n", g.childrenVar)); err != nil { return err } @@ -629,9 +611,6 @@ func (g *generator) writeChildrenExpression(indentLevel int) (err error) { } func (g *generator) writeTemplElementExpression(indentLevel int, n parser.TemplElementExpression) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// TemplElement\n"); err != nil { - return err - } if len(n.Children) == 0 { return g.writeSelfClosingTemplElementExpression(indentLevel, n) } @@ -712,9 +691,6 @@ func (g *generator) writeSelfClosingTemplElementExpression(indentLevel int, n pa } func (g *generator) writeCallTemplateExpression(indentLevel int, n parser.CallTemplateExpression) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// CallTemplate\n"); err != nil { - return err - } if _, err = g.w.WriteIndent(indentLevel, `err = `); err != nil { return err } @@ -735,9 +711,6 @@ func (g *generator) writeCallTemplateExpression(indentLevel int, n parser.CallTe } func (g *generator) writeForExpression(indentLevel int, n parser.ForExpression) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// For\n"); err != nil { - return err - } var r parser.Range // for if _, err = g.w.WriteIndent(indentLevel, `for `); err != nil { @@ -791,36 +764,24 @@ func (g *generator) writeElement(indentLevel int, n parser.Element) (err error) } func (g *generator) writeVoidElement(indentLevel int, n parser.Element) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Element (void)\n"); err != nil { - return err - } if len(n.Children) > 0 { return fmt.Errorf("writeVoidElement: void element %q must not have child elements", n.Name) } if len(n.Attributes) == 0 { //
    - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString("<%s>")`+"\n", html.EscapeString(n.Name))); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(`<%s>`, html.EscapeString(n.Name))); err != nil { return err } } else { //
    - if _, err = g.w.WriteIndent(indentLevel, `_, err = templBuffer.WriteString(">")`+"\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, `>`); err != nil { return err } } @@ -828,15 +789,9 @@ func (g *generator) writeVoidElement(indentLevel int, n parser.Element) (err err } func (g *generator) writeStandardElement(indentLevel int, n parser.Element) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Element (standard)\n"); err != nil { - return err - } if len(n.Attributes) == 0 { //
    - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString("<%s>")`+"\n", html.EscapeString(n.Name))); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(`<%s>`, html.EscapeString(n.Name))); err != nil { return err } } else { @@ -849,20 +804,14 @@ func (g *generator) writeStandardElement(indentLevel int, n parser.Element) (err return err } //
    - if _, err = g.w.WriteIndent(indentLevel, `_, err = templBuffer.WriteString(">")`+"\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, `>`); err != nil { return err } } @@ -871,10 +820,7 @@ func (g *generator) writeStandardElement(indentLevel int, n parser.Element) (err return err } //
    - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString("")`+"\n", html.EscapeString(n.Name))); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(``, html.EscapeString(n.Name))); err != nil { return err } return err @@ -887,9 +833,6 @@ func (g *generator) writeAttributeCSS(indentLevel int, attr parser.ExpressionAtt ok = false return } - if _, err = g.w.WriteIndent(indentLevel, "// Element CSS\n"); err != nil { - return - } // Create a class name for the style. // The expression can either be expecting a templ.Classes call, or an expression that returns // var templCSSClassess = []any{ @@ -964,9 +907,6 @@ func (g *generator) writeElementScript(indentLevel int, n parser.Element) (err e if len(scriptExpressions) == 0 { return } - if _, err = g.w.WriteIndent(indentLevel, "// Element Script\n"); err != nil { - return err - } // Render the scripts before the element if required. // err = templ.RenderScriptItems(ctx, templBuffer, a, b, c) if _, err = g.w.WriteIndent(indentLevel, "err = templ.RenderScriptItems(ctx, templBuffer, "+strings.Join(scriptExpressions, ", ")+")\n"); err != nil { @@ -980,10 +920,7 @@ func (g *generator) writeElementScript(indentLevel int, n parser.Element) (err e func (g *generator) writeBoolConstantAttribute(indentLevel int, attr parser.BoolConstantAttribute) (err error) { name := html.EscapeString(attr.Name) - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString(" %s")`+"\n", name)); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(` %s`, name)); err != nil { return err } return nil @@ -992,10 +929,7 @@ func (g *generator) writeBoolConstantAttribute(indentLevel int, attr parser.Bool func (g *generator) writeConstantAttribute(indentLevel int, attr parser.ConstantAttribute) (err error) { name := html.EscapeString(attr.Name) value := html.EscapeString(attr.Value) - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString(" %s=\"%s\"")`+"\n", name, value)); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(` %s=\"%s\"`, name, value)); err != nil { return err } return nil @@ -1019,10 +953,7 @@ func (g *generator) writeBoolExpressionAttribute(indentLevel int, attr parser.Bo } { indentLevel++ - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString(" %s")`+"\n", name)); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(` %s`, name)); err != nil { return err } indentLevel-- @@ -1037,18 +968,12 @@ func (g *generator) writeBoolExpressionAttribute(indentLevel int, attr parser.Bo func (g *generator) writeExpressionAttribute(indentLevel int, elementName string, attr parser.ExpressionAttribute) (err error) { attrName := html.EscapeString(attr.Name) // Name - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString(" %s=")`+"\n", attrName)); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(` %s=`, attrName)); err != nil { return err } // Value. // Open quote. - if _, err = g.w.WriteIndent(indentLevel, `_, err = templBuffer.WriteString("\"")`+"\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, `\"`); err != nil { return err } if elementName == "a" && attr.Name == "href" { @@ -1116,10 +1041,7 @@ func (g *generator) writeExpressionAttribute(indentLevel int, elementName string } } // Close quote. - if _, err = g.w.WriteIndent(indentLevel, `_, err = templBuffer.WriteString("\"")`+"\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, `\"`); err != nil { return err } return nil @@ -1168,9 +1090,6 @@ func (g *generator) writeConditionalAttribute(indentLevel int, elementName strin } func (g *generator) writeElementAttributes(indentLevel int, name string, attrs []parser.Attribute) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Element Attributes\n"); err != nil { - return err - } for i := 0; i < len(attrs); i++ { switch attr := attrs[i].(type) { case parser.BoolConstantAttribute: @@ -1191,33 +1110,21 @@ func (g *generator) writeElementAttributes(indentLevel int, name string, attrs [ } func (g *generator) writeRawElement(indentLevel int, n parser.RawElement) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// RawElement\n"); err != nil { - return err - } if len(n.Attributes) == 0 { //
    - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString("<%s>")`+"\n", html.EscapeString(n.Name))); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(`<%s>`, html.EscapeString(n.Name))); err != nil { return err } } else { //
    - if _, err = g.w.WriteIndent(indentLevel, `_, err = templBuffer.WriteString(">")`+"\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, `>`); err != nil { return err } } @@ -1226,10 +1133,7 @@ func (g *generator) writeRawElement(indentLevel int, n parser.RawElement) (err e return err } //
    - if _, err = g.w.WriteIndent(indentLevel, fmt.Sprintf(`_, err = templBuffer.WriteString("")`+"\n", html.EscapeString(n.Name))); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, fmt.Sprintf(``, html.EscapeString(n.Name))); err != nil { return err } return err @@ -1244,9 +1148,6 @@ func (g *generator) writeStringExpression(indentLevel int, e parser.Expression) if strings.TrimSpace(e.Value) == "" { return } - if _, err = g.w.WriteIndent(indentLevel, "// StringExpression\n"); err != nil { - return err - } var r parser.Range vn := g.createVariableName() // var vn string = sExpr @@ -1272,23 +1173,14 @@ func (g *generator) writeWhitespace(indentLevel int, n parser.Whitespace) (err e if len(n.Value) == 0 { return } - if _, err = g.w.WriteIndent(indentLevel, "// Whitespace (normalised)\n"); err != nil { - return err - } // _, err = templBuffer.WriteString(` `) - if _, err = g.w.WriteIndent(indentLevel, "_, err = templBuffer.WriteString(` `)\n"); err != nil { - return err - } - if err = g.writeErrorHandler(indentLevel); err != nil { + if _, err = g.w.WriteStringLiteral(indentLevel, " "); err != nil { return err } return nil } func (g *generator) writeText(indentLevel int, n parser.Text) (err error) { - if _, err = g.w.WriteIndent(indentLevel, "// Text\n"); err != nil { - return err - } vn := g.createVariableName() // vn := sExpr if _, err = g.w.WriteIndent(indentLevel, vn+" := "+createGoString(n.Value)+"\n"); err != nil { diff --git a/generator/generator_test.go b/generator/generator_test.go index f430ebb6d..c2e85874d 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -23,9 +23,7 @@ func TestGeneratorSourceMap(t *testing.T) { if err != nil { t.Fatalf("failed to write Go expression: %v", err) } - // The from value is (16, 1, 0) because the generator prefixes the - // expression with a "// GoExpression" comment. - expected := parser.NewPosition(16, 1, 0) + expected := parser.NewPosition(0, 0, 0) actual, ok := g.sourceMap.TargetPositionFromSource(0, 0) if !ok { diff --git a/generator/rangewriter.go b/generator/rangewriter.go index c1a648d76..2a3f974a8 100644 --- a/generator/rangewriter.go +++ b/generator/rangewriter.go @@ -14,19 +14,62 @@ func NewRangeWriter(w io.Writer) *RangeWriter { } type RangeWriter struct { - Current parser.Position - w io.Writer + Current parser.Position + inLiteral bool + w io.Writer +} + +func (rw *RangeWriter) closeLiteral(indent int) (r parser.Range, err error) { + rw.inLiteral = false + _, err = rw.write("\")\n") + if err != nil { + return + } + err = rw.writeErrorHandler(indent) + return } func (rw *RangeWriter) WriteIndent(level int, s string) (r parser.Range, err error) { - _, err = rw.Write(strings.Repeat("\t", level)) + if rw.inLiteral { + if _, err = rw.closeLiteral(level); err != nil { + return + } + } + _, err = rw.write(strings.Repeat("\t", level)) + if err != nil { + return + } + return rw.write(s) +} + +func (rw *RangeWriter) WriteStringLiteral(level int, s string) (r parser.Range, err error) { + if !rw.inLiteral { + _, err = rw.write(strings.Repeat("\t", level)) + if err != nil { + return + } + if _, err = rw.WriteIndent(level, `_, err = templBuffer.WriteString("`); err != nil { + return + } + } + _, err = rw.write(s) if err != nil { return } - return rw.Write(s) + rw.inLiteral = true + return } func (rw *RangeWriter) Write(s string) (r parser.Range, err error) { + if rw.inLiteral { + if _, err = rw.closeLiteral(0); err != nil { + return + } + } + return rw.write(s) +} + +func (rw *RangeWriter) write(s string) (r parser.Range, err error) { r.From = parser.Position{ Index: rw.Current.Index, Line: rw.Current.Line, @@ -48,3 +91,21 @@ func (rw *RangeWriter) Write(s string) (r parser.Range, err error) { r.To = rw.Current return r, err } + +func (rw *RangeWriter) writeErrorHandler(indentLevel int) (err error) { + _, err = rw.WriteIndent(indentLevel, "if err != nil {\n") + if err != nil { + return err + } + indentLevel++ + _, err = rw.WriteIndent(indentLevel, "return err\n") + if err != nil { + return err + } + indentLevel-- + _, err = rw.WriteIndent(indentLevel, "}\n") + if err != nil { + return err + } + return err +} diff --git a/generator/test-a-href/template_templ.go b/generator/test-a-href/template_templ.go index d421226a8..9a2544fff 100644 --- a/generator/test-a-href/template_templ.go +++ b/generator/test-a-href/template_templ.go @@ -22,41 +22,16 @@ func render() templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - // Element Attributes - _, err = templBuffer.WriteString(" href=\"javascript:alert('unaffected');\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Text var_2 := `Ignored` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Text var_4 := `Sanitized` _, err = templBuffer.WriteString(var_4) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // Text var_6 := `Unsanitized` _, err = templBuffer.WriteString(var_6) if err != nil { diff --git a/generator/test-attribute-escaping/template_templ.go b/generator/test-attribute-escaping/template_templ.go index 38f7ce70e..8e6f2172f 100644 --- a/generator/test-attribute-escaping/template_templ.go +++ b/generator/test-attribute-escaping/template_templ.go @@ -22,22 +22,7 @@ func BasicTemplate(url string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
    ") if err != nil { return err } diff --git a/generator/test-call/template_templ.go b/generator/test-call/template_templ.go index 9dce52fa1..a8d3e2202 100644 --- a/generator/test-call/template_templ.go +++ b/generator/test-call/template_templ.go @@ -22,45 +22,16 @@ func personTemplate(p person) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("

    ") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

    ") - if err != nil { - return err - } - // StringExpression var var_2 string = p.name _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("

    ") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
    ") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // CallTemplate err = email(p.email).Render(ctx, templBuffer) if err != nil { return err } - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("
    ") if err != nil { return err } @@ -109,28 +71,16 @@ func email(s string) templ.Component { var_3 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
    ") if err != nil { return err } - // Text var_4 := `email:` _, err = templBuffer.WriteString(var_4) if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_6 string = s _, err = templBuffer.WriteString(templ.EscapeString(var_6)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/generator/test-complex-attributes/template_templ.go b/generator/test-complex-attributes/template_templ.go index e0363ba9c..d86d1067c 100644 --- a/generator/test-complex-attributes/template_templ.go +++ b/generator/test-complex-attributes/template_templ.go @@ -22,149 +22,25 @@ func ComplexAttributes() templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Text var_2 := `Increment` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Text var_3 := `Increment` _, err = templBuffer.WriteString(var_3) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/generator/test-css-usage/template_templ.go b/generator/test-css-usage/template_templ.go index c2e03685f..8db261d0e 100644 --- a/generator/test-css-usage/template_templ.go +++ b/generator/test-css-usage/template_templ.go @@ -44,23 +44,12 @@ func Button(text string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_2 = []any{className(), templ.Class("&&&unsafe"), "safe", templ.SafeClass("safe2")} err = templ.RenderCSSItems(ctx, templBuffer, var_2...) if err != nil { return err } - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(" type=\"button\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_3 string = text _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { @@ -110,23 +90,12 @@ func LegacySupport() templ.Component { var_4 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_5 = []any{templ.Classes(templ.Class("test"), "a")} err = templ.RenderCSSItems(ctx, templBuffer, var_5...) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } @@ -166,23 +127,12 @@ func MapCSSExample() templ.Component { var_6 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_7 = []any{map[string]bool{"a": true, "b": false, "c": true}} err = templ.RenderCSSItems(ctx, templBuffer, var_7...) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } @@ -222,23 +164,12 @@ func KVExample() templ.Component { var_8 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_9 = []any{"a", templ.KV("b", false)} err = templ.RenderCSSItems(ctx, templBuffer, var_9...) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } @@ -278,33 +201,20 @@ func ThreeButtons() templ.Component { var_10 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // CallTemplate err = Button("A").Render(ctx, templBuffer) if err != nil { return err } - // CallTemplate err = Button("B").Render(ctx, templBuffer) if err != nil { return err } - // Element (standard) - // Element CSS var var_11 = []any{templ.Classes(green)} err = templ.RenderCSSItems(ctx, templBuffer, var_11...) if err != nil { return err } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\" type=\"button\">") if err != nil { return err } - // StringExpression var var_12 string = "Green" _, err = templBuffer.WriteString(templ.EscapeString(var_12)) if err != nil { @@ -334,12 +235,10 @@ func ThreeButtons() templ.Component { if err != nil { return err } - // CallTemplate err = MapCSSExample().Render(ctx, templBuffer) if err != nil { return err } - // CallTemplate err = KVExample().Render(ctx, templBuffer) if err != nil { return err diff --git a/generator/test-doctype/template_templ.go b/generator/test-doctype/template_templ.go index 51aaf56ee..e9edbd6ec 100644 --- a/generator/test-doctype/template_templ.go +++ b/generator/test-doctype/template_templ.go @@ -22,115 +22,25 @@ func Layout(title, content string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // DocType - _, err = templBuffer.WriteString(``) + _, err = templBuffer.WriteString("") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("<html") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" lang=\"en\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("<head>") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" charset=\"UTF-8\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" http-equiv=\"X-UA-Compatible\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" content=\"IE=edge\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("<meta") - if err != nil { - return err - } - // Element Attributes - _, err = templBuffer.WriteString(" name=\"viewport\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(" content=\"width=device-width, initial-scale=1.0\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("<title>") - if err != nil { - return err - } - // StringExpression var var_2 string = title _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } - // StringExpression var var_3 string = content _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/generator/test-element-attributes/template_templ.go b/generator/test-element-attributes/template_templ.go index b3cbe1376..bb49a0cf0 100644 --- a/generator/test-element-attributes/template_templ.go +++ b/generator/test-element-attributes/template_templ.go @@ -43,29 +43,17 @@ func render(p person) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element CSS var var_2 = []any{important()} err = templ.RenderCSSItems(ctx, templBuffer, var_2...) if err != nil { return err } - _, err = templBuffer.WriteString("") if err != nil { return err } - // If if d.IsTrue() { - // StringExpression var var_2 string = "True" _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } } else if !d.IsTrue() { - // StringExpression var var_3 string = "False" _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { return err } } else { - // StringExpression var var_4 string = "Else" _, err = templBuffer.WriteString(templ.EscapeString(var_4)) if err != nil { return err } } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("
    ") if err != nil { return err } - // If if 1 == 2 { - // StringExpression var var_5 string = "If" _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { return err } } else if 1 == 1 { - // StringExpression var var_6 string = "ElseIf" _, err = templBuffer.WriteString(templ.EscapeString(var_6)) if err != nil { return err } } - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("
    ") if err != nil { return err } - // If if 1 == 2 { - // StringExpression var var_7 string = "If" _, err = templBuffer.WriteString(templ.EscapeString(var_7)) if err != nil { return err } } else if 1 == 3 { - // StringExpression var var_8 string = "ElseIf" _, err = templBuffer.WriteString(templ.EscapeString(var_8)) if err != nil { return err } } else if 1 == 4 { - // StringExpression var var_9 string = "ElseIf" _, err = templBuffer.WriteString(templ.EscapeString(var_9)) if err != nil { return err } } else if 1 == 1 { - // StringExpression var var_10 string = "OK" _, err = templBuffer.WriteString(templ.EscapeString(var_10)) if err != nil { diff --git a/generator/test-for/template_templ.go b/generator/test-for/template_templ.go index dc5775939..f0bb10f54 100644 --- a/generator/test-for/template_templ.go +++ b/generator/test-for/template_templ.go @@ -22,14 +22,11 @@ func render(items []string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // For for _, item := range items { - // Element (standard) _, err = templBuffer.WriteString("
    ") if err != nil { return err } - // StringExpression var var_2 string = item _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { diff --git a/generator/test-html/template_templ.go b/generator/test-html/template_templ.go index fa4da63ca..c17db5db8 100644 --- a/generator/test-html/template_templ.go +++ b/generator/test-html/template_templ.go @@ -22,45 +22,16 @@ func render(p person) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("

    ") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("

    ") - if err != nil { - return err - } - // StringExpression var var_2 string = p.name _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } - _, err = templBuffer.WriteString("

    ") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("
    ") + _, err = templBuffer.WriteString("\">
    ") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Text var_3 := `email:` _, err = templBuffer.WriteString(var_3) if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_5 string = p.email _, err = templBuffer.WriteString(templ.EscapeString(var_5)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("
    ") - if err != nil { - return err - } - // Element (void) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString(">
    ") if err != nil { return err } diff --git a/generator/test-if/template_templ.go b/generator/test-if/template_templ.go index e73d7a967..edb00f8da 100644 --- a/generator/test-if/template_templ.go +++ b/generator/test-if/template_templ.go @@ -22,16 +22,13 @@ func render(d data) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // If if d.IsTrue() { - // StringExpression var var_2 string = "True" _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } } else { - // StringExpression var var_3 string = "False" _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { diff --git a/generator/test-ifelse/template_templ.go b/generator/test-ifelse/template_templ.go index 63da7da61..d7b7d5026 100644 --- a/generator/test-ifelse/template_templ.go +++ b/generator/test-ifelse/template_templ.go @@ -22,16 +22,13 @@ func render(d data) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // If if d.IsTrue() { - // StringExpression var var_2 string = "True" _, err = templBuffer.WriteString(templ.EscapeString(var_2)) if err != nil { return err } } else { - // StringExpression var var_3 string = "False" _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { diff --git a/generator/test-import/template_templ.go b/generator/test-import/template_templ.go index dba44baf8..c3395bc0e 100644 --- a/generator/test-import/template_templ.go +++ b/generator/test-import/template_templ.go @@ -22,12 +22,10 @@ func listItem() templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
  2. ") if err != nil { return err } - // Children err = var_1.Render(ctx, templBuffer) if err != nil { return err @@ -56,12 +54,10 @@ func list() templ.Component { var_2 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) _, err = templBuffer.WriteString("
      ") if err != nil { return err } - // Children err = var_2.Render(ctx, templBuffer) if err != nil { return err @@ -90,26 +86,22 @@ func main() templ.Component { var_3 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // TemplElement var_4 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // TemplElement var_5 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // Element (standard) _, err = templBuffer.WriteString("") if err != nil { return err } - // Text var_6 := `Item 1` _, err = templBuffer.WriteString(var_6) if err != nil { @@ -128,24 +120,20 @@ func main() templ.Component { if err != nil { return err } - // Whitespace (normalised) - _, err = templBuffer.WriteString(` `) + _, err = templBuffer.WriteString(" ") if err != nil { return err } - // TemplElement var_7 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // Element (standard) _, err = templBuffer.WriteString("") if err != nil { return err } - // Text var_8 := `Item 2` _, err = templBuffer.WriteString(var_8) if err != nil { @@ -164,24 +152,20 @@ func main() templ.Component { if err != nil { return err } - // Whitespace (normalised) - _, err = templBuffer.WriteString(` `) + _, err = templBuffer.WriteString(" ") if err != nil { return err } - // TemplElement var_9 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { templBuffer, templIsBuffer := w.(*bytes.Buffer) if !templIsBuffer { templBuffer = templ.GetBuffer() defer templ.ReleaseBuffer(templBuffer) } - // Element (standard) _, err = templBuffer.WriteString("") if err != nil { return err } - // Text var_10 := `Item 3` _, err = templBuffer.WriteString(var_10) if err != nil { diff --git a/generator/test-raw-elements/template_templ.go b/generator/test-raw-elements/template_templ.go index e30b0132c..02402a297 100644 --- a/generator/test-raw-elements/template_templ.go +++ b/generator/test-raw-elements/template_templ.go @@ -22,46 +22,19 @@ func Example() templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // RawElement - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("

      ") + _, err = templBuffer.WriteString("

      ") if err != nil { return err } - // Text var_5 := `Hello` _, err = templBuffer.WriteString(var_5) if err != nil { return err } - _, err = templBuffer.WriteString("

      ") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("") if err != nil { return err } diff --git a/generator/test-script-usage/template_templ.go b/generator/test-script-usage/template_templ.go index 6f0a1a540..f8191546e 100644 --- a/generator/test-script-usage/template_templ.go +++ b/generator/test-script-usage/template_templ.go @@ -38,22 +38,11 @@ func Button(text string) templ.Component { var_1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // Element (standard) - // Element Script err = templ.RenderScriptItems(ctx, templBuffer, withParameters("test", text, 123), withoutParameters()) if err != nil { return err } - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(" type=\"button\"") - if err != nil { - return err - } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // StringExpression var var_4 string = text _, err = templBuffer.WriteString(templ.EscapeString(var_4)) if err != nil { @@ -121,35 +93,18 @@ func ThreeButtons() templ.Component { var_5 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - // CallTemplate err = Button("A").Render(ctx, templBuffer) if err != nil { return err } - // CallTemplate err = Button("B").Render(ctx, templBuffer) if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // Element (standard) - _, err = templBuffer.WriteString("
") - if err != nil { - return err - } - // Text var_2 := `File` _, err = templBuffer.WriteString(var_2) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("
") + _, err = templBuffer.WriteString("
") if err != nil { return err } - // StringExpression var var_3 string = uri _, err = templBuffer.WriteString(templ.EscapeString(var_3)) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // Text var_5 := `Mapping` _, err = templBuffer.WriteString(var_5) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Text var_7 := `Source Map` _, err = templBuffer.WriteString(var_7) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") if err != nil { return err } - _, err = templBuffer.WriteString(">") - if err != nil { - return err - } - // Text var_9 := `Templ` _, err = templBuffer.WriteString(var_9) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - // Element (standard) - _, err = templBuffer.WriteString("") + _, err = templBuffer.WriteString("\">") if err != nil { return err } - // Text var_11 := `Go` _, err = templBuffer.WriteString(var_11) if err != nil { return err } - _, err = templBuffer.WriteString("") - if err != nil { - return err - } - _, err = templBuffer.WriteString("