mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: Workspace filters case insensitive (#2646)
This commit is contained in:
@@ -1,20 +1,32 @@
|
||||
package slice
|
||||
|
||||
func Contains[T comparable](haystack []T, needle T) bool {
|
||||
func ContainsCompare[T any](haystack []T, needle T, equal func(a, b T) bool) bool {
|
||||
for _, hay := range haystack {
|
||||
if needle == hay {
|
||||
if equal(needle, hay) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func Contains[T comparable](haystack []T, needle T) bool {
|
||||
return ContainsCompare(haystack, needle, func(a, b T) bool {
|
||||
return a == b
|
||||
})
|
||||
}
|
||||
|
||||
// Overlap returns if the 2 sets have any overlap (element(s) in common)
|
||||
func Overlap[T comparable](a []T, b []T) bool {
|
||||
return OverlapCompare(a, b, func(a, b T) bool {
|
||||
return a == b
|
||||
})
|
||||
}
|
||||
|
||||
func OverlapCompare[T any](a []T, b []T, equal func(a, b T) bool) bool {
|
||||
// For each element in b, if at least 1 is contained in 'a',
|
||||
// return true.
|
||||
for _, element := range b {
|
||||
if Contains(a, element) {
|
||||
if ContainsCompare(a, element, equal) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user