From 7a42e60bcb9995592248e7f249066e80114a5c72 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Tue, 30 Jun 2015 18:20:36 -0600 Subject: [PATCH] templates: Support for nested include files i.e. included files are also parsed as templates --- middleware/templates/context.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/middleware/templates/context.go b/middleware/templates/context.go index bdecea8b..6f23e7f3 100644 --- a/middleware/templates/context.go +++ b/middleware/templates/context.go @@ -1,10 +1,12 @@ package templates import ( + "bytes" "io/ioutil" "net" "net/http" "net/url" + "text/template" "time" "github.com/mholt/caddy/middleware" @@ -26,8 +28,24 @@ func (c context) Include(filename string) (string, error) { if err != nil { return "", err } + body, err := ioutil.ReadAll(file) - return string(body), err + if err != nil { + return "", err + } + + tpl, err := template.New(filename).Parse(string(body)) + if err != nil { + return "", err + } + + var buf bytes.Buffer + err = tpl.Execute(&buf, c) + if err != nil { + return "", err + } + + return buf.String(), nil } // Date returns the current timestamp in the specified format