MCPcopy Index your code
hub / github.com/redspread/spread / ParseArguments

Function ParseArguments

pkg/data/parameter.go:143–171  ·  view source on GitHub ↗

ParseArguments returns arguments parsed from JSON. If coerceStr is true, will attempt to parse as string if parsing initially fails.

(in string, coerceStr bool)

Source from the content-addressed store, hash-verified

141
142// ParseArguments returns arguments parsed from JSON. If coerceStr is true, will attempt to parse as string if parsing initially fails.
143func ParseArguments(in string, coerceStr bool) (args []*pb.Argument, err error) {
144 var data interface{}
145 err = json.Unmarshal([]byte(in), &data)
146 if err != nil {
147 // if coercion is requested, attempt to process input as string
148 if strings.HasPrefix(err.Error(), "invalid character") && coerceStr {
149 in = fmt.Sprintf(`"%s"`, in)
150 args, err = ParseArguments(in, false)
151 }
152 return
153 }
154
155 var dataArr []interface{}
156 if arr, isArray := data.([]interface{}); isArray {
157 dataArr = arr
158 } else {
159 dataArr = []interface{}{data}
160 }
161
162 args = make([]*pb.Argument, len(dataArr))
163 for k, v := range dataArr {
164 arg, err := argFromJSONType(v)
165 if err != nil {
166 return nil, err
167 }
168 args[k] = arg
169 }
170 return
171}
172
173func argFromJSONType(data interface{}) (*pb.Argument, error) {
174 arg := &pb.Argument{}

Callers 1

InteractiveArgsFunction · 0.85

Calls 1

argFromJSONTypeFunction · 0.85

Tested by

no test coverage detected