mirror of
https://github.com/helm/helm.git
synced 2026-05-28 04:35:48 -04:00
Add ToJson and FromJson template functions
This commit is contained in:
parent
1113a106cb
commit
5c52fe6ad6
2 changed files with 31 additions and 0 deletions
|
|
@ -17,6 +17,7 @@ package chartutil
|
|||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
|
|
@ -189,3 +190,31 @@ func FromYaml(str string) map[string]interface{} {
|
|||
}
|
||||
return m
|
||||
}
|
||||
|
||||
// ToJson takes an interface, marshals it to json, and returns a string. It will
|
||||
// always return a string, even on marshal error (empty string).
|
||||
//
|
||||
// This is designed to be called from a template.
|
||||
func ToJson(v interface{}) string {
|
||||
data, err := json.Marshal(v)
|
||||
if err != nil {
|
||||
// Swallow errors inside of a template.
|
||||
return ""
|
||||
}
|
||||
return string(data)
|
||||
}
|
||||
|
||||
// FromJson converts a YAML document into a map[string]interface{}.
|
||||
//
|
||||
// This is not a general-purpose JSON 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 FromJson(str string) map[string]interface{} {
|
||||
m := map[string]interface{}{}
|
||||
|
||||
if err := json.Unmarshal([]byte(str), &m); err != nil {
|
||||
m["Error"] = err.Error()
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,6 +72,8 @@ func FuncMap() template.FuncMap {
|
|||
extra := template.FuncMap{
|
||||
"toYaml": chartutil.ToYaml,
|
||||
"fromYaml": chartutil.FromYaml,
|
||||
"toJson": chartutil.ToJson,
|
||||
"fromJson": chartutil.FromJson,
|
||||
|
||||
// This is a placeholder for the "include" function, which is
|
||||
// late-bound to a template. By declaring it here, we preserve the
|
||||
|
|
|
|||
Loading…
Reference in a new issue