diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go index fc9fc1f64..ea1ce8a51 100644 --- a/tpl/template_funcs.go +++ b/tpl/template_funcs.go @@ -1746,19 +1746,19 @@ func sha1(in interface{}) (string, error) { return hex.EncodeToString(hash[:]), nil } -// querify converts the given parameters into a url.Values object -func querify(params ...interface{}) (url.Values, error) { +// querify encodes the given parameters “URL encoded” form ("bar=baz&foo=quux") sorted by key. +func querify(params ...interface{}) (string, error) { qs := url.Values{} vals, err := dictionary(params...) if err != nil { - return url.Values{}, fmt.Errorf("querify keys must be strings") + return "", fmt.Errorf("querify keys must be strings") } for name, value := range vals { qs.Add(name, url.QueryEscape(fmt.Sprintf("%v", value))) } - return qs, nil + return qs.Encode(), nil } func init() { diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index bccee4c9e..32e6e50f5 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -103,7 +103,7 @@ modBool: {{modBool 15 3}} mul: {{mul 2 3}} plainify: {{ plainify "Hello world, gophers!" }} pluralize: {{ "cat" | pluralize }} -querify: {{ (querify "foo" 1 "bar" 2 "baz" "with spaces").Encode | safeHTML }} +querify: {{ (querify "foo" 1 "bar" 2 "baz" "with spaces") | safeHTML }} readDir: {{ range (readDir ".") }}{{ .Name }}{{ end }} readFile: {{ readFile "README.txt" }} relURL 1: {{ "http://gohugo.io/" | relURL }}