From: Bjørn Erik Pedersen Date: Sun, 26 Mar 2017 18:07:15 +0000 (+0200) Subject: Revert "tplimpl: return an error on unsupported type in isSet" X-Git-Tag: v0.20~110 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=2bea9d0ca19fb442803abf57171e89b9d824b154;p=brevno-suite%2Fhugo Revert "tplimpl: return an error on unsupported type in isSet" This breaks the theme site and lots of themes, so we will have to thinkg a little harder about this one. This reverts commit 74ea81b885adc64d0194df461cbc85667294d16e. --- diff --git a/tpl/tplimpl/template_funcs.go b/tpl/tplimpl/template_funcs.go index 987a00d9..1ec05b0c 100644 --- a/tpl/tplimpl/template_funcs.go +++ b/tpl/tplimpl/template_funcs.go @@ -1325,24 +1325,22 @@ func (p pairList) sort() interface{} { // isSet returns whether a given array, channel, slice, or map has a key // defined. -func isSet(a interface{}, key interface{}) (bool, error) { +func isSet(a interface{}, key interface{}) bool { av := reflect.ValueOf(a) kv := reflect.ValueOf(key) switch av.Kind() { case reflect.Array, reflect.Chan, reflect.Slice: if int64(av.Len()) > kv.Int() { - return true, nil + return true } case reflect.Map: if kv.Type() == av.Type().Key() { - return av.MapIndex(kv).IsValid(), nil + return av.MapIndex(kv).IsValid() } - default: - return false, fmt.Errorf("unsupported type %q", av.Kind()) } - return false, nil + return false } // returnWhenSet returns a given value if it set. Otherwise, it returns an diff --git a/tpl/tplimpl/template_funcs_test.go b/tpl/tplimpl/template_funcs_test.go index 355de182..aa322dde 100644 --- a/tpl/tplimpl/template_funcs_test.go +++ b/tpl/tplimpl/template_funcs_test.go @@ -1070,31 +1070,13 @@ func TestUnion(t *testing.T) { func TestIsSet(t *testing.T) { t.Parallel() + aSlice := []interface{}{1, 2, 3, 5} + aMap := map[string]interface{}{"a": 1, "b": 2} - for _, test := range []struct { - src interface{} - key interface{} - res bool - isErr bool - errStr string - }{ - {[]interface{}{1, 2, 3, 5}, 2, true, false, ""}, - {[]interface{}{1, 2, 3, 5}, 22, false, false, ""}, - - {map[string]interface{}{"a": 1, "b": 2}, "b", true, false, ""}, - {map[string]interface{}{"a": 1, "b": 2}, "bc", false, false, ""}, - - {time.Now(), 1, false, true, `unsupported type "struct"`}, - } { - res, err := isSet(test.src, test.key) - if test.isErr { - assert.EqualError(t, err, test.errStr) - continue - } - - assert.NoError(t, err) - assert.Equal(t, test.res, res) - } + assert.True(t, isSet(aSlice, 2)) + assert.True(t, isSet(aMap, "b")) + assert.False(t, isSet(aSlice, 22)) + assert.False(t, isSet(aMap, "bc")) } func (x *TstX) TstRp() string {