shithub: hugo

Download patch

ref: 179225449ca812e52f10be532b5fa165f7cfadf5
parent: 4e0208d448a8793766d8835d6fd2228ddf822273
author: Vincent Batoufflet <vincent@batoufflet.info>
date: Thu May 8 10:56:28 EDT 2014

Add template comparison functions (Go 1.1 compat)

--- a/hugolib/template.go
+++ b/hugolib/template.go
@@ -16,7 +16,35 @@
 	"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 @@
 		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 @@
 	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,
--