Add time.Time support in ge, gt, le, lt
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 20 Nov 2015 10:53:25 +0000 (11:53 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 20 Nov 2015 10:53:25 +0000 (11:53 +0100)
Fixes #1593

tpl/template_funcs.go
tpl/template_funcs_test.go

index 53666b925599eabdec277ac2669f3e7db3cfc6aa..8b5b71a2c6a4a33177a2e4f606db64e70d283b00 100644 (file)
@@ -112,6 +112,11 @@ func compareGetFloat(a interface{}, b interface{}) (float64, float64) {
                        str := av.String()
                        leftStr = &str
                }
+       case reflect.Struct:
+               switch av.Type() {
+               case timeType:
+                       left = float64(timeUnix(av))
+               }
        }
 
        bv := reflect.ValueOf(b)
@@ -129,7 +134,11 @@ func compareGetFloat(a interface{}, b interface{}) (float64, float64) {
                        str := bv.String()
                        rightStr = &str
                }
-
+       case reflect.Struct:
+               switch bv.Type() {
+               case timeType:
+                       right = float64(timeUnix(bv))
+               }
        }
 
        switch {
index 67e23c03093c525b2f4aec857a85a2ee5cd11c83..9683e4595f66bde8607b67957aab2817c4df330e 100644 (file)
@@ -5,6 +5,7 @@ import (
        "encoding/base64"
        "errors"
        "fmt"
+       "github.com/spf13/cast"
        "html/template"
        "path"
        "reflect"
@@ -81,6 +82,9 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b inte
                {"8", "5", 1},
                {"5", "0001", 1},
                {[]int{100, 99}, []int{1, 2, 3, 4}, -1},
+               {cast.ToTime("2015-11-20"), cast.ToTime("2015-11-20"), 0},
+               {cast.ToTime("2015-11-19"), cast.ToTime("2015-11-20"), -1},
+               {cast.ToTime("2015-11-20"), cast.ToTime("2015-11-19"), 1},
        } {
                result := funcUnderTest(this.left, this.right)
                success := false