pkg/template/engine/internal/codec/decoder.go (33 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package codec import ( "encoding/json" "sigs.k8s.io/yaml" ) // FromYAML converts a YAML document into a map[string]interface{}. // // This is not a general-purpose YAML parser, and will not parse all valid // YAML documents. Additionally, because its intended use is within templates // it tolerates errors. It will insert the returned error message string into // m["Error"] in the returned map. func FromYAML(str string) map[string]interface{} { m := map[string]interface{}{} if err := yaml.Unmarshal([]byte(str), &m); err != nil { m["Error"] = err.Error() } return m } // FromYAMLArray converts a YAML array into a []interface{}. // // This is not a general-purpose YAML parser, and will not parse all valid // YAML documents. Additionally, because its intended use is within templates // it tolerates errors. It will insert the returned error message string as // the first and only item in the returned array. func FromYAMLArray(str string) []interface{} { a := []interface{}{} if err := yaml.Unmarshal([]byte(str), &a); err != nil { a = []interface{}{err.Error()} } return a } // FromJSON converts a JSON document into a map[string]interface{}. // // This is not a general-purpose JSON parser, and will not parse all valid // JSON documents. Additionally, because its intended use is within templates // it tolerates errors. It will insert the returned error message string into // m["Error"] in the returned map. func FromJSON(str string) map[string]interface{} { m := make(map[string]interface{}) if err := json.Unmarshal([]byte(str), &m); err != nil { m["Error"] = err.Error() } return m } // FromJSONArray converts a JSON array into a []interface{}. // // This is not a general-purpose JSON parser, and will not parse all valid // JSON documents. Additionally, because its intended use is within templates // it tolerates errors. It will insert the returned error message string as // the first and only item in the returned array. func FromJSONArray(str string) []interface{} { a := []interface{}{} if err := json.Unmarshal([]byte(str), &a); err != nil { a = []interface{}{err.Error()} } return a }