Skip to content

Commit

Permalink
fixing up example
Browse files Browse the repository at this point in the history
  • Loading branch information
Craig Peterson committed Jul 18, 2015
1 parent 351122f commit 314c02f
Show file tree
Hide file tree
Showing 11 changed files with 89 additions and 168 deletions.
Binary file added example/example
Binary file not shown.
51 changes: 48 additions & 3 deletions example/main.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package main

//go:generate templeGen -dir templates -pkg main -var myTemplates -o templates.go

import (
"flag"
"log"

"net/http"

"github.com/captncraig/temple"
)

Expand All @@ -16,6 +19,48 @@ func main() {
log.Fatal(err)
}

template, err := templateManager.GetTemplate("main.tpl")
...
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
ctx := homePageContext{
baseContext{"Home"},
[]string{"foo", "bar", "baz"},
}
// homepage composes shared templates by directly referencing "header" and "footer" templates.
err := templateManager.Execute(w, ctx, "homepage")
if err != nil {
http.Error(w, err.Error(), 500)
}
})

http.HandleFunc("/mc", func(w http.ResponseWriter, r *http.Request) {
ctx := masterChildContext{
baseContext{"Master / Child"},
"AAAAA",
"BBBBB",
}
// master / child templates let the library compose things for you
// so no explicit reference to other templates is needed.
err := templateManager.ExecuteMaster(w, ctx, "master", "child")
if err != nil {
http.Error(w, err.Error(), 500)
}
})
http.ListenAndServe(":5555", nil)

}

// base context that every page needs because the header/footer reference it.
// every one of my single-page contexts will embed this so that the fields are always availible to the header.
type baseContext struct {
PageTitle string
}

type homePageContext struct {
baseContext
Items []string
}

type masterChildContext struct {
baseContext
Foobar string
Xyz string
}
11 changes: 6 additions & 5 deletions example/templates.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package main

// Generated by templeGen. DO NOT EDIT!
var mytemplates = map[string]string{
"a.tmpl": "QUFBQQoKVGhpcyBpcyBhIGxhcmdlIHRlbXBsYXRlIHt7LkZvb319IEJhciB7ey5CYXp9fQoKCgo=",
"b": "QkJCQg==",
"bosun_index.tmpl": "PCFET0NUWVBFIGh0bWw+CjxodG1sIG5nLWFwcD0iYm9zdW5BcHAiPgoJPGhlYWQ+CgkJPHRpdGxlIG5nLWJpbmQ9IidCb3N1biAmbWRhc2g7ICcgKyB0aXRsZSI+PC90aXRsZT4KCQk8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiIC8+CgkJPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIvZmF2aWNvbi5pY28iPgoJCTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KCQk8bGluayBocmVmPSIvc3RhdGljL2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KCQk8bGluayBocmVmPSIvc3RhdGljL2Nzcy9qcXVlcnktdWkubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4KCQk8c3R5bGU+CgkJCS5uYXZiYXItc3RhdGljLXRvcCB7CgkJCQltYXJnaW4tYm90dG9tOiAxOXB4OwoJCQl9CgkJCSNsb2dvIHsKCQkJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCQkJCXRvcDogMTBweDsKCQkJfQoJCQkjbG9nby10ZXh0IHsKCQkJCW1hcmdpbi1sZWZ0OiAzOHB4OwoJCQkJZm9udC1zaXplOiAyOHB4OwoJCQkJY29sb3I6ICMxZjUyOTY7CgkJCQlsZXR0ZXItc3BhY2luZzogLTFweDsKCQkJfQoJCQkudGFibGVzb3J0ZXItaGVhZGVyQXNjIC50YWJsZXNvcnRlci1oZWFkZXItaW5uZXI6OmJlZm9yZSB7CgkJCQljb250ZW50OiAn4payJzsKCQkJfQoJCQkudGFibGVzb3J0ZXItaGVhZGVyRGVzYyAudGFibGVzb3J0ZXItaGVhZGVyLWlubmVyOjpiZWZvcmUgewoJCQkJY29udGVudDogJ+KWvCc7CgkJCX0KCgkJCS5wYW5lbC1oZWFkaW5nIHsKCQkJCWN1cnNvcjogcG9pbnRlcjsgY3Vyc29yOiBoYW5kOwoJCQl9CgkJCWxhYmVsLnNlbGVjdCB7CgkJCQltYXJnaW4tbGVmdDogMTJweDsKCQkJCW1hcmdpbi10b3A6IC0ycHg7CgkJCX0KCQkJLndpdGgtc2VsZWN0ZWQgewoJCQkJbWFyZ2luLXJpZ2h0OiA1cHg7CgkJCQlib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjOwoJCQkJcGFkZGluZy1yaWdodDogNXB4OwoJCQl9CgoJCQlzdmcgewoJCQkJZm9udDogMTBweCBzYW5zLXNlcmlmOwoJCQl9CgkJCS5heGlzIHBhdGgsIC5heGlzIGxpbmUsIC5mb2N1cyBsaW5lIHsKCQkJCWZpbGw6IG5vbmU7CgkJCQlzdHJva2U6ICMwMDA7CgkJCQlzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7CgkJCX0KCQkJLmxpbmUgewoJCQkJZmlsbDogbm9uZTsKCQkJCXN0cm9rZS13aWR0aDogMS41cHg7CgkJCQlzaGFwZS1yZW5kZXJpbmc6IGF1dG87CgkJCX0KCQkJLnlsYWJlbCB7CgkJCQlmb250OiAxMnB4IHNhbnMtc2VyaWY7CgkJCX0KCgkJCS50bC1heGlzIHBhdGgsIC50bC1heGlzIGxpbmUgewoJCQkJc3Ryb2tlLXdpZHRoOiAxOwoJCQl9CgkJCS50bC1ub3JtYWwgewoJCQkJZmlsbDogIzNjNzYzZDsKCQkJfQoJCQkudGwtY3JpdGljYWwsIC50bC1lcnJvciB7CgkJCQlmaWxsOiAjQTk0NDQyOwoJCQl9CgkJCS50bC13YXJuaW5nIHsKCQkJCWZpbGw6ICNmYWViY2M7CgkJCX0KCQkJLnRsLXVua25vd24gewoJCQkJZmlsbDogI2Q5ZWRmNzsKCQkJfQoJCQkudGwtbGVnZW5kIHsKCQkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCQkJbWFyZ2luLWJvdHRvbTogMTBweDsKCQkJCWJvcmRlci1jb2xvcjogYmxhY2s7CgkJCQlib3JkZXItd2lkdGg6IDJweDsKCQkJfQoJCTwvc3R5bGU+Cgk8L2hlYWQ+Cgk8Ym9keSBuZy1jb250cm9sbGVyPSJCb3N1bkN0cmwiPgoJCTxkaXYgY2xhc3M9Im5hdmJhciBuYXZiYXItZGVmYXVsdCBuYXZiYXItc3RhdGljLXRvcCIgcm9sZT0ibmF2aWdhdGlvbiI+CgkJCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CgkJCQk8ZGl2IGNsYXNzPSJuYXZiYXItaGVhZGVyIj4KCQkJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9IiNuYXZiYXItY29sbGFwc2UiPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CgkJCQkJCTxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgoJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KCQkJCQkJPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CgkJCQkJPC9idXR0b24+CgkJCQkJPGEgY2xhc3M9Im5hdmJhci1icmFuZCIgaHJlZj0iLyI+CgkJCQkJCTxkaXYgaWQ9ImxvZ28iPjwvZGl2PgoJCQkJCQk8ZGl2IGlkPSJsb2dvLXRleHQiPkJvc3VuPC9kaXY+CgkJCQkJPC9hPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJuYXZiYXItY29sbGFwc2UgY29sbGFwc2UiIGlkPSJuYXZiYXItY29sbGFwc2UiPgoJCQkJCTx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgoJCQkJCQk8bGkgbmctY2xhc3M9ImFjdGl2ZSgnaXRlbXMnKSI+PGEgaHJlZj0iL2l0ZW1zIj5JdGVtczwvYT48L2xpPgoJCQkJCQk8bGkgbmctY2xhc3M9ImFjdGl2ZSgnZ3JhcGgnKSI+PGEgaHJlZj0iL2dyYXBoIj5HcmFwaDwvYT48L2xpPgoJCQkJCQk8bGkgbmctY2xhc3M9ImFjdGl2ZSgnZXhwcicpIj48YSBocmVmPSIvZXhwciI+RXhwcmVzc2lvbjwvYT48L2xpPgoJCQkJCQk8bGkgbmctY2xhc3M9ImFjdGl2ZSgnY29uZmlnJykiPjxhIGhyZWY9Ii9jb25maWciPlJ1bGUgRWRpdG9yPC9hPjwvbGk+CgkJCQkJCTxsaSBuZy1jbGFzcz0iYWN0aXZlKCdzaWxlbmNlJykiPjxhIGhyZWY9Ii9zaWxlbmNlIj5TaWxlbmNlPC9hPjwvbGk+CgkJCQkJCTxsaSBuZy1jbGFzcz0iYWN0aXZlKCdwdXQnKSI+PGEgaHJlZj0iL3B1dCI+U3VibWl0IERhdGE8L2E+PC9saT4KCQkJCQk8L3VsPgoJCQkJCTx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYgbmF2YmFyLXJpZ2h0Ij4KCQkJCQkJPGxpPgoJCQkJCQkJPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IG5hdmJhci1idG4gYnRuLXNtIiBuZy1jbGljaz0ic2hvcnRlbigpIiBuZy1oaWRlPSJzaG9ydGxpbmsiPlNob3J0IExpbms8L2J1dHRvbj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0ibmF2YmFyLWJ0biBidG4tc20gZm9ybS1jb250cm9sIGlucHV0LXNtIiBpZD0ic2hvcnRsaW5rIiBuZy1zaG93PSJzaG9ydGxpbmsiPgoJCQkJCQk8L2xpPgoJCQkJCQk8bGkgY2xhc3M9ImRyb3Bkb3duIj48YSBocmVmPSIjIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iPkhlbHAgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPgoJCQkJCQkJPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL2Jvc3VuLm9yZy9jb25maWd1cmF0aW9uLmh0bWwiPkNvbmZpZ3VyYXRpb24gYW5kIEV4cHJlc3Npb24gU3ludGF4PC9hPjwvbGk+CgkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHA6Ly9ib3N1bi5vcmcvYXBpLmh0bWwiPkFQSSBFbmRwb2ludHM8L2E+PC9saT4KCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL29wZW50c2RiLm5ldC9kb2NzL2J1aWxkL2h0bWwvaW5kZXguaHRtbCI+T3BlblRTREIgRG9jdW1lbnRhdGlvbjwvYT48L2xpPgoJCQkJCQkJPC91bD4KCQkJCQkJPC9saT4KCQkJCQk8L3VsPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoJCQk8ZGl2IGNsYXNzPSJyb3ciPgoJCQkJPGRpdiBjbGFzcz0iY29sLWxnLTEyIiBuZy12aWV3PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2pxdWVyeS11aS5qcyI+PC9zY3JpcHQ+CgkJPHNjcmlwdCBzcmM9Ii9zdGF0aWMvanMvdW5kZXJzY29yZS1taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2FuZ3VsYXIubWluLmpzIj48L3NjcmlwdD4KCQk8c2NyaXB0IHNyYz0iL3N0YXRpYy9qcy9hbmd1bGFyLXJvdXRlLm1pbi5qcyI+PC9zY3JpcHQ+CgkJPHNjcmlwdCBzcmM9Ii9zdGF0aWMvanMvYW5ndWxhci1zYW5pdGl6ZS5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2FuZ3VsYXItc3RyYXAuanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2FuZ3VsYXItc3RyYXAudHBsLm1pbi5qcyI+PC9zY3JpcHQ+CgkJPHNjcmlwdCBzcmM9Ii9zdGF0aWMvanMvYWNlL2FjZS5qcyI+PC9zY3JpcHQ+CgkJPHNjcmlwdCBzcmM9Ii9zdGF0aWMvanMvYW5ndWxhci1hY2UuanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL21vbWVudC5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL21vbWVudC1kdXJhdGlvbi1mb3JtYXQubWluLmpzIj48L3NjcmlwdD4KCQk8c2NyaXB0IHNyYz0iL3N0YXRpYy9qcy9kMy52My5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMiPjwvc2NyaXB0PgoJCTxzY3JpcHQgc3JjPSIvc3RhdGljL2pzL2Jvc3VuLmpzIj48L3NjcmlwdD4KCQl7ey5JbmNsdWRlc319Cgk8L2JvZHk+CjwvaHRtbD4K",
"header": "PGh0bWw+CjxoZWFkPgoKCjwvaGVhZD4KPGJvZHk+CgoK",
var myTemplates = map[string]string{
"child": "Q2hpbGQgdGVtcGxhdGUgY2FuIGRvIHdoYXRldmVyIGl0IHdhbnRzOiB7ey5Gb29iYXJ9fQ==",
"footer": "Cgo8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOiAwcHg7Jz5NYWRlIGJ5IG1lITwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4=",
"header": "PGh0bWw+CjxoZWFkPgo8dGl0bGU+TXkgd2Vic2l0ZSAtIHt7LlBhZ2VUaXRsZX19PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPk15IHdlYnNpdGUhISE8L2gxPg==",
"homepage": "e3t0ZW1wbGF0ZSAiaGVhZGVyIiAufX0KCgpUaGlzIGlzIG15IGNvbnRlbnQgaGVyZSE8YnIvPgoKPHVsPgp7e3JhbmdlIC5JdGVtc319Cgk8bGk+e3sufX0Ke3tlbmR9fQo8L3VsPgoKe3t0ZW1wbGF0ZSAiZm9vdGVyIiAufX0=",
"master": "PGh0bWw+CjxoZWFkPgoKCjwvaGVhZD4KPGJvZHk+ClRoZSBtYXN0ZXIgZGVmaW5lcyB0aGlzIHBhcnQuCgoKTWFzdGVyIGNhbiBpbmNsdWRlIGRhdGEgZnJvbSBjb250ZXh0IGJ5IHJlZmVyZW5jaW5nIGAuRGF0YS4/Pz9gIExpa2Ugc286IHt7LkRhdGEuWHl6fX0gPGJyLz4KCkFib3V0IHRvIGluY2x1ZGUgY2hpbGQgY29udGVudCB3aXRoIC5Db250ZW50Ogo8aHIvPgp7ey5Db250ZW50fX0KPGhyLz4KTWFzdGVyIHBhcnQgYWdhaW4u",
}
6 changes: 0 additions & 6 deletions example/templates/a.tmpl

This file was deleted.

1 change: 0 additions & 1 deletion example/templates/b

This file was deleted.

149 changes: 0 additions & 149 deletions example/templates/bosun_index.tmpl

This file was deleted.

1 change: 1 addition & 0 deletions example/templates/child
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Child template can do whatever it wants: {{.Foobar}}
5 changes: 5 additions & 0 deletions example/templates/footer
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@


<div style='position:absolute; bottom: 0px;'>Made by me!</div>
</body>
</html>
6 changes: 2 additions & 4 deletions example/templates/header
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
<html>
<head>


<title>My website - {{.PageTitle}}</title>
</head>
<body>


<h1>My website!!!</h1>
11 changes: 11 additions & 0 deletions example/templates/homepage
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{template "header" .}}

This is my content here!<br/>

<ul>
{{range .Items}}
<li>{{.}}
{{end}}
</ul>

{{template "footer" .}}
16 changes: 16 additions & 0 deletions example/templates/master
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<html>
<head>


</head>
<body>
The master defines this part.


Master can include data from context by referencing `.Data.???` Like so: {{.Data.Xyz}} <br/>

About to include child content with .Content:
<hr/>
{{.Content}}
<hr/>
Master part again.

0 comments on commit 314c02f

Please sign in to comment.