mirror of https://github.com/go-gitea/gitea.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
637 B
35 lines
637 B
// 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 |
|
}
|
|
|