2016-12-30 21:12:14 +00:00
|
|
|
// Package slices contains functions to operate on slices treated as sets.
|
2016-02-10 18:30:52 +00:00
|
|
|
package slices // import "github.com/influxdata/influxdb/pkg/slices"
|
2015-09-02 22:33:16 +00:00
|
|
|
|
|
|
|
import "strings"
|
|
|
|
|
2016-12-30 21:12:14 +00:00
|
|
|
// Union combines two string sets.
|
2015-09-02 22:33:16 +00:00
|
|
|
func Union(setA, setB []string, ignoreCase bool) []string {
|
|
|
|
for _, b := range setB {
|
|
|
|
if ignoreCase {
|
|
|
|
if !ExistsIgnoreCase(setA, b) {
|
|
|
|
setA = append(setA, b)
|
|
|
|
}
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
if !Exists(setA, b) {
|
|
|
|
setA = append(setA, b)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return setA
|
|
|
|
}
|
|
|
|
|
2016-12-30 21:12:14 +00:00
|
|
|
// Exists checks if a string is in a set.
|
2015-09-02 22:33:16 +00:00
|
|
|
func Exists(set []string, find string) bool {
|
|
|
|
for _, s := range set {
|
|
|
|
if s == find {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2016-12-30 21:12:14 +00:00
|
|
|
// ExistsIgnoreCase checks if a string is in a set but ignores its case.
|
2015-09-02 22:33:16 +00:00
|
|
|
func ExistsIgnoreCase(set []string, find string) bool {
|
|
|
|
for _, s := range set {
|
2020-05-18 23:46:59 +00:00
|
|
|
if strings.EqualFold(s, find) {
|
2015-09-02 22:33:16 +00:00
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
2017-11-17 12:43:31 +00:00
|
|
|
|
|
|
|
// StringsToBytes converts a variable number of strings into a slice of []byte.
|
|
|
|
func StringsToBytes(s ...string) [][]byte {
|
|
|
|
a := make([][]byte, 0, len(s))
|
|
|
|
for _, v := range s {
|
|
|
|
a = append(a, []byte(v))
|
|
|
|
}
|
|
|
|
return a
|
|
|
|
}
|