mirror of
https://github.com/vmware-tanzu/pinniped.git
synced 2025-12-23 14:25:50 +00:00
44 lines
936 B
Go
44 lines
936 B
Go
// Copyright 2024 the Pinniped contributors. All Rights Reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package setutil
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"k8s.io/apimachinery/pkg/util/sets"
|
|
|
|
"go.pinniped.dev/internal/sliceutil"
|
|
)
|
|
|
|
type CaseInsensitiveSet struct {
|
|
lowercasedContents sets.Set[string]
|
|
}
|
|
|
|
func NewCaseInsensitiveSet(items ...string) *CaseInsensitiveSet {
|
|
return &CaseInsensitiveSet{
|
|
lowercasedContents: sets.New(sliceutil.Map(items, strings.ToLower)...),
|
|
}
|
|
}
|
|
|
|
func (s *CaseInsensitiveSet) HasAnyIgnoringCase(items []string) bool {
|
|
if s == nil {
|
|
return false
|
|
}
|
|
return s.lowercasedContents.HasAny(sliceutil.Map(items, strings.ToLower)...)
|
|
}
|
|
|
|
func (s *CaseInsensitiveSet) ContainsIgnoringCase(item string) bool {
|
|
if s == nil {
|
|
return false
|
|
}
|
|
return s.lowercasedContents.Has(strings.ToLower(item))
|
|
}
|
|
|
|
func (s *CaseInsensitiveSet) Empty() bool {
|
|
if s == nil {
|
|
return true
|
|
}
|
|
return s.lowercasedContents.Len() == 0
|
|
}
|