in internal/langserver/handlers/command/resource_json_converter.go [180:214]
func toCtyValue(input interface{}) cty.Value {
if input == nil {
return cty.NullVal(cty.DynamicPseudoType)
}
switch v := input.(type) {
case map[string]interface{}:
m := map[string]cty.Value{}
for k, v := range v {
m[k] = toCtyValue(v)
}
return cty.ObjectVal(m)
case []interface{}:
l := make([]cty.Value, len(v))
for i, e := range v {
l[i] = toCtyValue(e)
}
return cty.TupleVal(l)
case string:
return cty.StringVal(v)
case bool:
return cty.BoolVal(v)
case float64:
return cty.NumberFloatVal(v)
case float32:
return cty.NumberFloatVal(float64(v))
case int:
return cty.NumberIntVal(int64(v))
case int64:
return cty.NumberIntVal(v)
case int32:
return cty.NumberIntVal(int64(v))
default:
return cty.NullVal(cty.DynamicPseudoType)
}
}