package utils import ( "sort" "strings" ) /* ---------------------------------------------------------------- * * EXPORTS * ---------------------------------------------------------------- */ func StrListContains(list []string, x string) bool { for _, obj := range list { if obj == x { return true } } return false } func Min2(x int, y int) int { if x <= y { return x } return y } func Max2(x int, y int) int { if x >= y { return x } return y } func SortStrings(list *[]string) { sort.Slice(*list, func(i int, j int) bool { u := strings.ToLower((*list)[i]) v := strings.ToLower((*list)[j]) cmp := strings.Compare(u, v) return (cmp < 0) }) } func FilterStrings(list *[]string, f func(string) bool) []string { var listFiltered = []string{} for _, val := range *list { if f(val) { listFiltered = append(listFiltered, val) } } return listFiltered } func UnionStrings2(list1 []string, list2 []string) []string { var mark = make(map[string]bool) for _, item := range list1 { mark[item] = true } for _, item := range list2 { mark[item] = true } var list = make([]string, len(mark)) var i int = 0 for item, _ := range mark { list[i] = item i++ } return list } func UnionStringsTo(listTo *[]string, listFrom []string) { var mark = make(map[string]bool) for _, item := range listFrom { mark[item] = true } for _, item := range *listTo { mark[item] = false // signals suppression of duplicate addition } for item, isNew := range mark { if isNew { *listTo = append(*listTo, item) } } }