From 70544f9e62e5577d1daac1af8849739e4bef98ad Mon Sep 17 00:00:00 2001 From: Wade Fitzpatrick Date: Thu, 4 Aug 2016 09:55:24 +1000 Subject: [PATCH] tpl: Add time template func Fixes #2328 --- tpl/template_funcs.go | 11 +++++++++++ tpl/template_funcs_test.go | 2 ++ 2 files changed, 13 insertions(+) diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go index b04b36810..28ac1f885 100644 --- a/tpl/template_funcs.go +++ b/tpl/template_funcs.go @@ -1380,6 +1380,16 @@ func replaceRE(pattern, repl, src interface{}) (_ string, err error) { return re.ReplaceAllString(srcStr, replStr), nil } +// asTime converts the textual representation of the datetime string into +// a time.Time interface. +func asTime(v interface{}) (interface{}, error) { + t, err := cast.ToTimeE(v) + if err != nil { + return nil, err + } + return t, nil +} + // dateFormat converts the textual representation of the datetime string into // the other form or returns it of the time.Time value. These are formatted // with the layout string @@ -1869,6 +1879,7 @@ func init() { "sub": func(a, b interface{}) (interface{}, error) { return helpers.DoArithmetic(a, b, '-') }, "substr": substr, "title": func(a string) string { return strings.Title(a) }, + "time": asTime, "trim": trim, "upper": func(a string) string { return strings.ToUpper(a) }, "urlize": helpers.URLize, diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index 2d8f753bd..6246bba0b 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -136,6 +136,7 @@ sub: {{sub 3 2}} substr: {{substr "BatMan" 0 -3}} substr: {{substr "BatMan" 3 3}} title: {{title "Bat man"}} +time: {{ time "2015-01-21" }} trim: {{ trim "++Batman--" "+-" }} upper: {{upper "BatMan"}} urlize: {{ "Bat Man" | urlize }} @@ -199,6 +200,7 @@ sub: 1 substr: Bat substr: Man title: Bat Man +time: 2015-01-21T00:00:00Z trim: Batman upper: BATMAN urlize: bat-man