k3s/vendor/github.com/rancher/wrangler/pkg/kv/split.go
Darren Shepherd 53ed13bf29 Update vendor
2020-04-18 23:59:08 -07:00

46 lines
1.0 KiB
Go

package kv
import "strings"
// Like split but if there is only one item return "", item
func RSplit(s, sep string) (string, string) {
parts := strings.SplitN(s, sep, 2)
if len(parts) == 1 {
return "", strings.TrimSpace(parts[0])
}
return strings.TrimSpace(parts[0]), strings.TrimSpace(safeIndex(parts, 1))
}
func Split(s, sep string) (string, string) {
parts := strings.SplitN(s, sep, 2)
return strings.TrimSpace(parts[0]), strings.TrimSpace(safeIndex(parts, 1))
}
func SplitLast(s, sep string) (string, string) {
idx := strings.LastIndex(s, sep)
if idx > -1 {
return strings.TrimSpace(s[:idx]), strings.TrimSpace(s[idx+1:])
}
return s, ""
}
func SplitMap(s, sep string) map[string]string {
return SplitMapFromSlice(strings.Split(s, sep))
}
func SplitMapFromSlice(parts []string) map[string]string {
result := map[string]string{}
for _, part := range parts {
k, v := Split(part, "=")
result[k] = v
}
return result
}
func safeIndex(parts []string, idx int) string {
if len(parts) <= idx {
return ""
}
return parts[idx]
}