mirror of
https://github.com/spf13/viper
synced 2025-05-11 06:37:27 +00:00
extract parsing into single func
This commit is contained in:
parent
326772ea29
commit
61c17d0781
1 changed files with 17 additions and 24 deletions
41
viper.go
41
viper.go
|
@ -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) }
|
||||
|
|
Loading…
Add table
Reference in a new issue