Files
sbctl/stringset/stringset.go
2023-08-03 15:20:14 +02:00

45 lines
766 B
Go

package stringset
import (
"fmt"
"strings"
"golang.org/x/exp/slices"
)
type StringSet struct {
Allowed []string
Value string
}
func NewStringSet(allowed []string, d string) *StringSet {
return &StringSet{
Allowed: allowed,
Value: d,
}
}
func (s StringSet) String() string {
return s.Value
}
func (s *StringSet) Set(p string) error {
if !slices.Contains(s.Allowed, p) {
return fmt.Errorf("%s is not included in %s", p, strings.Join(s.Allowed, ","))
}
s.Value = p
return nil
}
func (s *StringSet) Type() string {
var allowedValues string
for _, allowedValue := range s.Allowed {
allowedValues += fmt.Sprintf("%v,", allowedValue)
}
allowedValues = strings.TrimRight(allowedValues, ",")
return fmt.Sprintf("[%v]", allowedValues)
}