in internal/langserver/handlers/command/cmd_args.go [47:85]
func ParseCommandArgs(arguments []json.RawMessage) CommandArgs {
args := make(map[string]interface{})
if arguments == nil {
return args
}
for _, rawArg := range arguments {
var arg string
err := json.Unmarshal(rawArg, &arg)
if err != nil {
// TODO: Log error
continue
}
if arg == "" {
continue
}
pair := strings.SplitN(arg, "=", 2)
if len(pair) != 2 {
continue
}
variable := strings.ToLower(pair[0])
value := pair[1]
if value == "" {
args[variable] = value
continue
}
if f, err := strconv.ParseFloat(value, 64); err == nil {
args[variable] = f
} else if b, err := strconv.ParseBool(value); err == nil {
args[variable] = b
} else {
args[variable] = value
}
}
return args
}