Add template comparison functions (Go 1.1 compat)

This commit is contained in:
Vincent Batoufflet 2014-05-08 14:56:28 +02:00 committed by spf13
parent 4e0208d448
commit 179225449c

View file

@ -16,7 +16,35 @@ import (
"github.com/spf13/hugo/helpers" "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 var left, right int64
av := reflect.ValueOf(a) av := reflect.ValueOf(a)
@ -40,7 +68,7 @@ func Gt(a interface{}, b interface{}) bool {
right, _ = strconv.ParseInt(bv.String(), 10, 64) 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 // First is exposed to templates, to iterate over the first N items in a
@ -163,7 +191,12 @@ func NewTemplate() Template {
funcMap := template.FuncMap{ funcMap := template.FuncMap{
"urlize": helpers.Urlize, "urlize": helpers.Urlize,
"sanitizeurl": helpers.SanitizeUrl, "sanitizeurl": helpers.SanitizeUrl,
"eq": Eq,
"ne": Ne,
"gt": Gt, "gt": Gt,
"ge": Ge,
"lt": Lt,
"le": Le,
"isset": IsSet, "isset": IsSet,
"echoParam": ReturnWhenSet, "echoParam": ReturnWhenSet,
"safeHtml": SafeHtml, "safeHtml": SafeHtml,