mirror of
https://github.com/gohugoio/hugo.git
synced 2025-03-23 07:11:29 +00:00
tpl: Send actual values to in from intersect
The `intersect` function uses `in` to avoid adding duplicates to the resulting set. We were passing `reflect.Value` items when we should have been using `Value.Interface()` to send the actual data structure. This fixes that. See #1952
This commit is contained in:
parent
600558273e
commit
df44b1930a
2 changed files with 4 additions and 4 deletions
|
@ -330,20 +330,20 @@ func intersect(l1, l2 interface{}) (interface{}, error) {
|
||||||
l2vv := l2v.Index(j)
|
l2vv := l2v.Index(j)
|
||||||
switch l1vv.Kind() {
|
switch l1vv.Kind() {
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
if l1vv.Type() == l2vv.Type() && l1vv.String() == l2vv.String() && !in(r, l2vv) {
|
if l1vv.Type() == l2vv.Type() && l1vv.String() == l2vv.String() && !in(r.Interface(), l2vv.Interface()) {
|
||||||
r = reflect.Append(r, l2vv)
|
r = reflect.Append(r, l2vv)
|
||||||
}
|
}
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||||
switch l2vv.Kind() {
|
switch l2vv.Kind() {
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||||
if l1vv.Int() == l2vv.Int() && !in(r, l2vv) {
|
if l1vv.Int() == l2vv.Int() && !in(r.Interface(), l2vv.Interface()) {
|
||||||
r = reflect.Append(r, l2vv)
|
r = reflect.Append(r, l2vv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case reflect.Float32, reflect.Float64:
|
case reflect.Float32, reflect.Float64:
|
||||||
switch l2vv.Kind() {
|
switch l2vv.Kind() {
|
||||||
case reflect.Float32, reflect.Float64:
|
case reflect.Float32, reflect.Float64:
|
||||||
if l1vv.Float() == l2vv.Float() && !in(r, l2vv) {
|
if l1vv.Float() == l2vv.Float() && !in(r.Interface(), l2vv.Interface()) {
|
||||||
r = reflect.Append(r, l2vv)
|
r = reflect.Append(r, l2vv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -776,7 +776,7 @@ func TestIntersect(t *testing.T) {
|
||||||
sequence2 interface{}
|
sequence2 interface{}
|
||||||
expect interface{}
|
expect interface{}
|
||||||
}{
|
}{
|
||||||
{[]string{"a", "b", "c"}, []string{"a", "b"}, []string{"a", "b"}},
|
{[]string{"a", "b", "c", "c"}, []string{"a", "b", "b"}, []string{"a", "b"}},
|
||||||
{[]string{"a", "b"}, []string{"a", "b", "c"}, []string{"a", "b"}},
|
{[]string{"a", "b"}, []string{"a", "b", "c"}, []string{"a", "b"}},
|
||||||
{[]string{"a", "b", "c"}, []string{"d", "e"}, []string{}},
|
{[]string{"a", "b", "c"}, []string{"d", "e"}, []string{}},
|
||||||
{[]string{}, []string{}, []string{}},
|
{[]string{}, []string{}, []string{}},
|
||||||
|
|
Loading…
Reference in a new issue