mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
tpl/collections: Return en empty slice in after instead of error
When the given index is out of bounds. So it can safely be used with `with` etc. without extra length checking. Fixes #4894
This commit is contained in:
parent
78e8a744b3
commit
f8212d2000
2 changed files with 5 additions and 4 deletions
|
@ -74,7 +74,7 @@ func (ns *Namespace) After(index interface{}, seq interface{}) (interface{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if indexv >= seqv.Len() {
|
if indexv >= seqv.Len() {
|
||||||
return nil, errors.New("no items left")
|
return seqv.Slice(0, 0).Interface(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return seqv.Slice(indexv, seqv.Len()).Interface(), nil
|
return seqv.Slice(indexv, seqv.Len()).Interface(), nil
|
||||||
|
|
|
@ -49,12 +49,13 @@ func TestAfter(t *testing.T) {
|
||||||
expect interface{}
|
expect interface{}
|
||||||
}{
|
}{
|
||||||
{int(2), []string{"a", "b", "c", "d"}, []string{"c", "d"}},
|
{int(2), []string{"a", "b", "c", "d"}, []string{"c", "d"}},
|
||||||
{int32(3), []string{"a", "b"}, false},
|
{int32(3), []string{"a", "b"}, []string{}},
|
||||||
{int64(2), []int{100, 200, 300}, []int{300}},
|
{int64(2), []int{100, 200, 300}, []int{300}},
|
||||||
{100, []int{100, 200}, false},
|
{100, []int{100, 200}, []int{}},
|
||||||
{"1", []int{100, 200, 300}, []int{200, 300}},
|
{"1", []int{100, 200, 300}, []int{200, 300}},
|
||||||
{int64(-1), []int{100, 200, 300}, false},
|
{int64(-1), []int{100, 200, 300}, false},
|
||||||
{"noint", []int{100, 200, 300}, false},
|
{"noint", []int{100, 200, 300}, false},
|
||||||
|
{2, []string{}, []string{}},
|
||||||
{1, nil, false},
|
{1, nil, false},
|
||||||
{nil, []int{100}, false},
|
{nil, []int{100}, false},
|
||||||
{1, t, false},
|
{1, t, false},
|
||||||
|
@ -70,7 +71,7 @@ func TestAfter(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, err, errMsg)
|
require.NoError(t, err, errMsg)
|
||||||
assert.Equal(t, test.expect, result, errMsg)
|
require.Equal(t, test.expect, result, errMsg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue