tpl: Update lower to accept interface{} params - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 4e5b4ac504b216b034eba456b6101635afc6d006
DIR parent 6b8422bb35b7c9eada3a62563f2056eee29f94e0
HTML Author: Cameron Moore <moorereason@gmail.com>
Date: Thu, 22 Dec 2016 17:39:38 -0600
tpl: Update lower to accept interface{} params
Updates #2822
Diffstat:
M tpl/template_funcs.go | 13 ++++++++++++-
M tpl/template_funcs_test.go | 23 +++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
---
DIR diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go
@@ -1446,6 +1446,17 @@ func chomp(text interface{}) (template.HTML, error) {
return template.HTML(strings.TrimRight(s, "\r\n")), nil
}
+// lower returns a copy of the input s with all Unicode letters mapped to their
+// lower case.
+func lower(s interface{}) (string, error) {
+ ss, err := cast.ToStringE(s)
+ if err != nil {
+ return "", err
+ }
+
+ return strings.ToLower(ss), nil
+}
+
// trim leading/trailing characters defined by b from a
func trim(a interface{}, b string) (string, error) {
aStr, err := cast.ToStringE(a)
@@ -2090,7 +2101,7 @@ func initFuncMap() {
"jsonify": jsonify,
"last": last,
"le": le,
- "lower": func(a string) string { return strings.ToLower(a) },
+ "lower": lower,
"lt": lt,
"markdownify": markdownify,
"md5": md5,
DIR diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go
@@ -1999,6 +1999,29 @@ func TestChomp(t *testing.T) {
}
}
+func TestLower(t *testing.T) {
+ cases := []struct {
+ s interface{}
+ want string
+ isErr bool
+ }{
+ {"TEST", "test", false},
+ {template.HTML("LoWeR"), "lower", false},
+ {[]byte("BYTES"), "bytes", false},
+ }
+
+ for i, c := range cases {
+ res, err := lower(c.s)
+ if (err != nil) != c.isErr {
+ t.Fatalf("[%d] unexpected isErr state: want %v, got %v, err = %v", i, c.want, (err != nil), err)
+ }
+
+ if res != c.want {
+ t.Errorf("[%d] lower failed: want %v, got %v", i, c.want, res)
+ }
+ }
+}
+
func TestHighlight(t *testing.T) {
code := "func boo() {}"
highlighted, err := highlight(code, "go", "")