From c8b4612c2e3676b69bb37e31aaeb17e85dcaa216 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Tue, 25 Dec 2012 00:06:55 -0500 Subject: [PATCH] Making generated code worky better but straying from the TDD path ... which is sad... --- gotime/smplt/simplate.go | 63 +++++++++++++++++++++++++++----------- gotime/smplt/smplt_test.go | 8 ++--- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/gotime/smplt/simplate.go b/gotime/smplt/simplate.go index 1b51737..2c9a6fd 100644 --- a/gotime/smplt/simplate.go +++ b/gotime/smplt/simplate.go @@ -17,30 +17,53 @@ const ( var ( simplateGenFileTmpl = template.Must(template.New("smpltgen").Parse(strings.Replace(` - /* GENERATED FILE - DO NOT EDIT */ - /* Rebuild with simplate filesystem parsing thingy! */ - package smpltgen +/* GENERATED FILE - DO NOT EDIT */ +/* Rebuild with simplate filesystem parsing thingy! */ +package smpltgen - import ( - "text/template" - ) +import ( + "bytes" + "net/http" + "text/template" - {{.InitPage.Body}} + "github.com/meatballhat/box-o-sand/gotime/smplt" +) - const ( - SIMPLATE_TMPL_{{.ConstName}} = __BACKTICK__{{.TemplatePage.Body}}__BACKTICK__ - ) +{{.InitPage.Body}} - var ( - simplateTmpl{{.FuncName}} = template.Must(template.New("{{.FuncName}}").Parse(SIMPLATE_TMPL_{{.ConstName}})) - ) +{{if .HasTemplatePage}} +const ( + SIMPLATE_TMPL_{{.ConstName}} = __BACKTICK__{{.TemplatePage.Body}}__BACKTICK__ +) - func SimplateHandlerFunc{{.FuncName}}(w http.ResponseWriter, req *http.Request) { - {{range .LogicPages}} - {{.Body}} - {{end}} - } +var ( + simplateTmpl{{.FuncName}} = template.Must(template.New("{{.FuncName}}").Parse(SIMPLATE_TMPL_{{.ConstName}})) +) +{{end}} + +func SimplateHandlerFunc{{.FuncName}}(w http.ResponseWriter, req *http.Request) { + var err error + ctx := make(map[string]interface{}) + {{range .LogicPages}} + {{.Body}} + {{end}} + + {{if .HasTemplatePage}} + var tmplBuf bytes.Buffer + err = simplateTmpl{{.FuncName}}.Execute(&tmplBuf, ctx) + if err != nil { + w.Header().Set("Content-Type", "text/html") + w.WriteHeader(http.StatusInternalServerError) + w.Write(smplt.HTTP_500_RESPONSE) + return + } + + w.Header().Set("Content-Type", "{{.ContentType}}") + w.WriteHeader(http.StatusOK) + w.Write(tmplBuf.Bytes()) + {{end}} +} `, "__BACKTICK__", "`", -1))) ) @@ -131,3 +154,7 @@ func (me *Simplate) ConstName() string { uppered := strings.ToUpper(escaped) return strings.Replace(uppered, "-", "_", -1) } + +func (me *Simplate) HasTemplatePage() bool { + return len(me.TemplatePage.Body) > 0 +} diff --git a/gotime/smplt/smplt_test.go b/gotime/smplt/smplt_test.go index 3837cf9..e047ba3 100644 --- a/gotime/smplt/smplt_test.go +++ b/gotime/smplt/smplt_test.go @@ -25,7 +25,7 @@ type Dance struct { When time.Time } -D := &Dance{ +ctx["D"] = &Dance{ Who: "Everybody", When: time.Now(), } @@ -45,11 +45,11 @@ type Dance struct { When time.Time } -D := &Dance{ +ctx["D"] = &Dance{ Who: "Everybody", When: time.Now(), +response.SetBody(ctx["D"]) } -response.SetBody(D) ` BASIC_NEGOTIATED_SIMPLATE = ` import ( @@ -61,7 +61,7 @@ type Dance struct { When time.Time } -D := &Dance{ +ctx["D"] = &Dance{ Who: "Everybody", When: time.Now(), }