shithub: hugo

Download patch

ref: 2bea9d0ca19fb442803abf57171e89b9d824b154
parent: 1b92c8b713dcaea36516ef86a72a82909c394d78
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Mar 26 16:07:15 EDT 2017

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.

--- a/tpl/tplimpl/template_funcs.go
+++ b/tpl/tplimpl/template_funcs.go
@@ -1325,7 +1325,7 @@
 
 // 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)
 
@@ -1332,17 +1332,15 @@
 	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
--- a/tpl/tplimpl/template_funcs_test.go
+++ b/tpl/tplimpl/template_funcs_test.go
@@ -1070,31 +1070,13 @@
 
 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 {