summaryrefslogtreecommitdiffstats
path: root/tpl
diff options
context:
space:
mode:
authorTom <tomaviv57@gmail.com>2020-05-02 12:57:34 +0300
committerGitHub <noreply@github.com>2020-05-02 11:57:34 +0200
commit04b1a6d997e72d9abada28db22650d38ccbcbb39 (patch)
treec085814c371c185d398ac64a0e5df781e4c0b3ec /tpl
parentdd31e800075eebd78f921df8b4865c238006e7a7 (diff)
Add support for sort by boolean
Diffstat (limited to 'tpl')
-rw-r--r--tpl/collections/sort_test.go3
-rw-r--r--tpl/compare/compare.go10
2 files changed, 13 insertions, 0 deletions
diff --git a/tpl/collections/sort_test.go b/tpl/collections/sort_test.go
index 2bf6e85fe..75e23fc7b 100644
--- a/tpl/collections/sort_test.go
+++ b/tpl/collections/sort_test.go
@@ -218,6 +218,9 @@ func TestSort(t *testing.T) {
map[interface{}]interface{}{"Title": "Foo", "Weight": 10},
},
},
+ // test boolean values
+ {[]bool{false, true, false}, "value", "asc", []bool{false, false, true}},
+ {[]bool{false, true, false}, "value", "desc", []bool{true, false, false}},
// test error cases
{(*[]TstX)(nil), nil, "asc", false},
{TstX{A: "a", B: "b"}, nil, "asc", false},
diff --git a/tpl/compare/compare.go b/tpl/compare/compare.go
index 50dafae3c..8ce572273 100644
--- a/tpl/compare/compare.go
+++ b/tpl/compare/compare.go
@@ -252,6 +252,11 @@ func (ns *Namespace) compareGet(a interface{}, b interface{}) (float64, float64)
case timeType:
left = float64(toTimeUnix(av))
}
+ case reflect.Bool:
+ left = 0
+ if av.Bool() {
+ left = 1
+ }
}
bv := reflect.ValueOf(b)
@@ -275,6 +280,11 @@ func (ns *Namespace) compareGet(a interface{}, b interface{}) (float64, float64)
case timeType:
right = float64(toTimeUnix(bv))
}
+ case reflect.Bool:
+ right = 0
+ if bv.Bool() {
+ right = 1
+ }
}
if ns.caseInsensitive && leftStr != nil && rightStr != nil {