ref: 435e996c4fd48e9009ffa9f83a19fb55f0777dbd
parent: c8c6f5d05bd3952014d53e0f05f3b59797868943
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Sun Mar 6 09:58:15 EST 2016
Add jsonify template func
--- a/docs/content/templates/functions.md
+++ b/docs/content/templates/functions.md
@@ -112,6 +112,14 @@
{{ .Render "summary" }} {{ end }}+
+### jsonify
+Encodes a given object to JSON.
+
+e.g.
+
+ {{ dict "title" .Title "content" .Plain | jsonify }}+
### last
Slices an array to only the last _N_ elements.
--- a/tpl/template_funcs.go
+++ b/tpl/template_funcs.go
@@ -16,6 +16,7 @@
import (
"bytes"
"encoding/base64"
+ "encoding/json"
"errors"
"fmt"
"html"
@@ -1142,6 +1143,15 @@
return template.HTML(m)
}
+// jsonify encodes a given object to JSON.
+func jsonify(v interface{}) (template.HTML, error) {+ b, err := json.Marshal(v)
+ if err != nil {+ return "", err
+ }
+ return template.HTML(b), nil
+}
+
func refPage(page interface{}, ref, methodName string) template.HTML {value := reflect.ValueOf(page)
@@ -1522,6 +1532,7 @@
"intersect": intersect,
"isSet": isSet,
"isset": isSet,
+ "jsonify": jsonify,
"last": last,
"le": le,
"lower": func(a string) string { return strings.ToLower(a) },--- a/tpl/template_funcs_test.go
+++ b/tpl/template_funcs_test.go
@@ -98,6 +98,7 @@
seq: {{ seq 3 }} sort: {{ slice "B" "C" "A" | sort }} delimit: {{ delimit (slice "A" "B" "C") ", " " and " }}+jsonify: {{ (slice "A" "B" "C") | jsonify }}`
expected := `chomp: <p>Blockhead</p>
dateFormat: Wednesday, Jan 21, 2015
@@ -132,6 +133,7 @@
seq: [1 2 3]
sort: [A B C]
delimit: A, B and C
+jsonify: ["A","B","C"]
`
var b bytes.Buffer
--
⑨