Files
pinniped/internal/setutil/setutil.go
2024-05-22 21:21:45 -05:00

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
}