func toCtyValue()

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)
	}
}