func FlattenTags()

in internal/azure/tags/tags.go [30:66]


func FlattenTags(input interface{}) types.Map {
	if input == nil {
		return basetypes.NewMapNull(types.StringType)
	}
	tagsMap := make(map[string]attr.Value)
	switch inputMap := input.(type) {
	case map[string]interface{}:
		for k, v := range inputMap {
			tagsMap[k] = basetypes.NewStringValue(v.(string))
		}
	case map[string]string:
		for k, v := range inputMap {
			tagsMap[k] = basetypes.NewStringValue(v)
		}
	case types.Map:
		for k, v := range inputMap.Elements() {
			if v.IsNull() {
				tagsMap[k] = basetypes.NewStringNull()
				continue
			}
			if strV, ok := v.(types.String); ok {
				tagsMap[k] = strV
			}
		}
	case types.Object:
		for k, v := range inputMap.Attributes() {
			if v.IsNull() {
				tagsMap[k] = basetypes.NewStringNull()
				continue
			}
			if strV, ok := v.(types.String); ok {
				tagsMap[k] = strV
			}
		}
	}
	return basetypes.NewMapValueMust(types.StringType, tagsMap)
}