extract parsing into single func

This commit is contained in:
Trevor Foster 2020-03-28 00:14:46 -04:00
parent 326772ea29
commit 61c17d0781

View file

@ -1084,18 +1084,7 @@ func (v *Viper) find(lcaseKey string, flagDefault bool) interface{} {
res, _ := readAsCSV(s)
return cast.ToIntSlice(res)
case "stringToString":
s := strings.TrimPrefix(flag.ValueString(), "[")
s = strings.TrimSuffix(s, "]")
if s == "" {
return nil
}
elements := strings.Split(s, ",")
result := make(map[string]string, len(elements))
for _, element := range elements {
pair := strings.SplitN(element, "=", 2)
result[pair[0]] = pair[1]
}
return result
return parseStringToStringFlagValue(flag.ValueString())
default:
return flag.ValueString()
}
@ -1172,18 +1161,7 @@ func (v *Viper) find(lcaseKey string, flagDefault bool) interface{} {
res, _ := readAsCSV(s)
return cast.ToIntSlice(res)
case "stringToString":
s := strings.TrimPrefix(flag.ValueString(), "[")
s = strings.TrimSuffix(s, "]")
if s == "" {
return nil
}
elements := strings.Split(s, ",")
result := make(map[string]string, len(elements))
for _, element := range elements {
pair := strings.SplitN(element, "=", 2)
result[pair[0]] = pair[1]
}
return result
return parseStringToStringFlagValue(flag.ValueString())
default:
return flag.ValueString()
}
@ -1203,6 +1181,21 @@ func readAsCSV(val string) ([]string, error) {
return csvReader.Read()
}
func parseStringToStringFlagValue(val string) map[string]string {
s := strings.TrimPrefix(val, "[")
s = strings.TrimSuffix(s, "]")
if s == "" {
return nil
}
elements := strings.Split(s, ",")
result := make(map[string]string, len(elements))
for _, element := range elements {
pair := strings.SplitN(element, "=", 2)
result[pair[0]] = pair[1]
}
return result
}
// IsSet checks to see if the key has been set in any of the data locations.
// IsSet is case-insensitive for a key.
func IsSet(key string) bool { return v.IsSet(key) }