You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.5 KiB
75 lines
1.5 KiB
package donut
|
|
|
|
import (
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
func appendUniq(slice []string, i string) []string {
|
|
for _, ele := range slice {
|
|
if ele == i {
|
|
return slice
|
|
}
|
|
}
|
|
return append(slice, i)
|
|
}
|
|
|
|
func filterPrefix(objects []string, prefix string) []string {
|
|
var results []string
|
|
for _, object := range objects {
|
|
if strings.HasPrefix(object, prefix) {
|
|
results = append(results, object)
|
|
}
|
|
}
|
|
return results
|
|
}
|
|
|
|
func removePrefix(objects []string, prefix string) []string {
|
|
var results []string
|
|
for _, object := range objects {
|
|
results = append(results, strings.TrimPrefix(object, prefix))
|
|
}
|
|
return results
|
|
}
|
|
|
|
func filterDelimited(objects []string, delim string) []string {
|
|
var results []string
|
|
for _, object := range objects {
|
|
if !strings.Contains(object, delim) {
|
|
results = append(results, object)
|
|
}
|
|
}
|
|
return results
|
|
}
|
|
|
|
func filterNotDelimited(objects []string, delim string) []string {
|
|
var results []string
|
|
for _, object := range objects {
|
|
if strings.Contains(object, delim) {
|
|
results = append(results, object)
|
|
}
|
|
}
|
|
return results
|
|
}
|
|
|
|
func extractDir(objects []string, delim string) []string {
|
|
var results []string
|
|
for _, object := range objects {
|
|
parts := strings.Split(object, delim)
|
|
results = append(results, parts[0]+delim)
|
|
}
|
|
return results
|
|
}
|
|
|
|
func uniqueObjects(objects []string) []string {
|
|
objectMap := make(map[string]string)
|
|
for _, v := range objects {
|
|
objectMap[v] = v
|
|
}
|
|
var results []string
|
|
for k := range objectMap {
|
|
results = append(results, k)
|
|
}
|
|
sort.Strings(results)
|
|
return results
|
|
}
|
|
|