From: Vincent Batoufflet Date: Thu, 8 May 2014 12:56:28 +0000 (+0200) Subject: Add template comparison functions (Go 1.1 compat) X-Git-Tag: v0.11~43 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=179225449ca812e52f10be532b5fa165f7cfadf5;p=brevno-suite%2Fhugo Add template comparison functions (Go 1.1 compat) --- diff --git a/hugolib/template.go b/hugolib/template.go index f7bd5281..86cb4a54 100644 --- a/hugolib/template.go +++ b/hugolib/template.go @@ -16,7 +16,35 @@ import ( "github.com/spf13/hugo/helpers" ) -func Gt(a interface{}, b interface{}) bool { +func Eq(x, y interface{}) bool { + return reflect.DeepEqual(x, y) +} + +func Ne(x, y interface{}) bool { + return !Eq(x, y) +} + +func Ge(a, b interface{}) bool { + left, right := compareGetInt(a, b) + return left >= right +} + +func Gt(a, b interface{}) bool { + left, right := compareGetInt(a, b) + return left > right +} + +func Le(a, b interface{}) bool { + left, right := compareGetInt(a, b) + return left <= right +} + +func Lt(a, b interface{}) bool { + left, right := compareGetInt(a, b) + return left < right +} + +func compareGetInt(a interface{}, b interface{}) (int64, int64) { var left, right int64 av := reflect.ValueOf(a) @@ -40,7 +68,7 @@ func Gt(a interface{}, b interface{}) bool { right, _ = strconv.ParseInt(bv.String(), 10, 64) } - return left > right + return left, right } // First is exposed to templates, to iterate over the first N items in a @@ -163,7 +191,12 @@ func NewTemplate() Template { funcMap := template.FuncMap{ "urlize": helpers.Urlize, "sanitizeurl": helpers.SanitizeUrl, + "eq": Eq, + "ne": Ne, "gt": Gt, + "ge": Ge, + "lt": Lt, + "le": Le, "isset": IsSet, "echoParam": ReturnWhenSet, "safeHtml": SafeHtml,