From 9b635031a48391858bc3d47dac1759185f2335a8 Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Wed, 29 Apr 2015 23:45:42 -0700 Subject: [PATCH] init --- gen.go | 5 ++++ main.go | 59 ++++++++++++++++++++++++++++++++++++++++++++ templates/base.txt | 3 +++ templates/body.txt | 7 ++++++ templates/detail.txt | 7 ++++++ templates/pic.txt | 7 ++++++ 6 files changed, 88 insertions(+) create mode 100644 gen.go create mode 100644 main.go create mode 100644 templates/base.txt create mode 100644 templates/body.txt create mode 100644 templates/detail.txt create mode 100644 templates/pic.txt diff --git a/gen.go b/gen.go new file mode 100644 index 0000000..c4997f2 --- /dev/null +++ b/gen.go @@ -0,0 +1,5 @@ +package main + +//go:generate go get github.com/jteeuwen/go-bindata/... +//go:generate rm -f static.go +//go:generate go-bindata -o static.go -pkg=main templates/... diff --git a/main.go b/main.go new file mode 100644 index 0000000..f03735d --- /dev/null +++ b/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "fmt" + "os" + "strings" + "text/template" +) + +type Person struct { + Name string + Age int +} + +func main() { + var err error + funcMap := template.FuncMap{ + "title": strings.Title, + } + base, err := Asset("templates/base.txt") + if err != nil { + panic(err) + } + tmpl, err := template.New("base").Funcs(funcMap).Parse(string(base)) + + templates := make(map[string]*template.Template) + + templateFiles := []struct { + name string + path string + }{ + {"body", "templates/body.txt"}, + {"detail", "templates/detail.txt"}, + {"pic", "templates/pic.txt"}, + } + for _, tf := range templateFiles { + a, err := Asset(tf.path) + if err != nil { + panic(err) + } + t, err := tmpl.Clone() + if err != nil { + panic(err) + } + + t, err = t.Parse(string(a)) + templates[tf.name] = t + } + + person := Person{"bilbo", 111} + for _, name := range []string{"body", "detail", "pic"} { + fmt.Println("--------------------------------------") + err = templates[name].Execute(os.Stdout, person) + if err != nil { + panic(err) + } + } + fmt.Println("--------------------------------------") +} diff --git a/templates/base.txt b/templates/base.txt new file mode 100644 index 0000000..8bd18d9 --- /dev/null +++ b/templates/base.txt @@ -0,0 +1,3 @@ +{{ define "header" }}head {{ template "title" .Name }}{{ end }} +{{ define "footer" }}foot {{ if . }}{{ . }}{{ end }} {{ end }} +{{ template "body" . }} diff --git a/templates/body.txt b/templates/body.txt new file mode 100644 index 0000000..760affb --- /dev/null +++ b/templates/body.txt @@ -0,0 +1,7 @@ +{{ define "body" }} +{{ template "header" . }} +body: {{ .Name | title}} is {{ .Age }} years old +{{ template "footer" .Name }} +{{ end }} + +{{ define "title" }} This is {{ . }}'s body {{ end }} diff --git a/templates/detail.txt b/templates/detail.txt new file mode 100644 index 0000000..596c88d --- /dev/null +++ b/templates/detail.txt @@ -0,0 +1,7 @@ +{{ define "body" }} +{{ template "header" . }} +no actual details about {{ .Name }} +{{ template "footer" }} +{{ end }} + +{{ define "title" }} This is {{ . }}'s detail {{ end }} diff --git a/templates/pic.txt b/templates/pic.txt new file mode 100644 index 0000000..6d67d7f --- /dev/null +++ b/templates/pic.txt @@ -0,0 +1,7 @@ +{{ define "body" }} +{{ template "header" . }} +pic: {{ .Name | title}} is {{ .Age }} years old +{{ template "footer" }} +{{ end }} + +{{ define "title" }} This is {{ . }}'s pic {{ end }}