1234567891011121314151617181920212223242526272829303132333435 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package templates
-
- import (
- "fmt"
- "reflect"
- )
-
- type SliceUtils struct{}
-
- func NewSliceUtils() *SliceUtils {
- return &SliceUtils{}
- }
-
- func (su *SliceUtils) Contains(s, v any) bool {
- if s == nil {
- return false
- }
- sv := reflect.ValueOf(s)
- if sv.Kind() != reflect.Slice && sv.Kind() != reflect.Array {
- panic(fmt.Sprintf("invalid type, expected slice or array, but got: %T", s))
- }
- for i := 0; i < sv.Len(); i++ {
- it := sv.Index(i)
- if !it.CanInterface() {
- continue
- }
- if it.Interface() == v {
- return true
- }
- }
- return false
- }
|