Commit 22a266a2 authored by Matthew Holt's avatar Matthew Holt

templates: Add arguments to .Include

parent 5a6b7656
......@@ -104,7 +104,7 @@ func nextFunc(shouldGzip bool) httpserver.Handler {
return 0, fmt.Errorf("ResponseWriter should be gzipResponseWriter, found %T", w)
}
if strings.Contains(w.Header().Get("Content-Type"), "application/x-gzip") {
return 0, fmt.Errorf("Content type should not be gzip.")
return 0, fmt.Errorf("Content-Type should not be gzip")
}
return 0, nil
}
......
......@@ -12,8 +12,9 @@ import (
"text/template"
"time"
"github.com/russross/blackfriday"
"os"
"github.com/russross/blackfriday"
)
// This file contains the context and functions available for
......@@ -24,10 +25,12 @@ type Context struct {
Root http.FileSystem
Req *http.Request
URL *url.URL
Args []interface{} // defined by arguments to .Include
}
// Include returns the contents of filename relative to the site root.
func (c Context) Include(filename string) (string, error) {
func (c Context) Include(filename string, args ...interface{}) (string, error) {
c.Args = args
return ContextInclude(filename, c, c.Root)
}
......
......@@ -30,6 +30,7 @@ func TestInclude(t *testing.T) {
}()
tests := []struct {
args []interface{}
fileContent string
expectedContent string
shouldErr bool
......@@ -42,7 +43,15 @@ func TestInclude(t *testing.T) {
shouldErr: false,
expectedErrorContent: "",
},
// Test 1 - failure on template.Parse
// Test 1 - all good, with args
{
args: []interface{}{"hello", 5},
fileContent: `str1 {{ .Root }} str2 {{index .Args 0}} {{index .Args 1}}`,
expectedContent: fmt.Sprintf("str1 %s str2 %s %d", context.Root, "hello", 5),
shouldErr: false,
expectedErrorContent: "",
},
// Test 2 - failure on template.Parse
{
fileContent: `str1 {{ .Root } str2`,
expectedContent: "",
......@@ -73,7 +82,7 @@ func TestInclude(t *testing.T) {
t.Fatal(testPrefix+"Failed to create test file. Error was: %v", err)
}
content, err := context.Include(inputFilename)
content, err := context.Include(inputFilename, test.args...)
if err != nil {
if !test.shouldErr {
t.Errorf(testPrefix+"Expected no error, found [%s]", test.expectedErrorContent, err.Error())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment