yamldecode
parses a string as a subset of YAML, and produces a representation of its value.
This function supports a subset of YAML 1.2, as described below.
This function maps YAML values to Terraform language values in the following way:
YAML type Terraform type!!str
string
!!float
number
!!int
number
!!bool
bool
!!map
object(...)
with attribute types determined per this table !!seq
tuple(...)
with element types determined per this table !!null
The Terraform language null
value !!timestamp
string
in RFC 3339 format !!binary
string
containing base64-encoded representation
The Terraform language automatic type conversion rules mean that you don't usually need to worry about exactly what type is produced for a given value, and can just use the result in an intuitive way.
Note though that the mapping above is ambiguous -- several different source types map to the same target type -- and so round-tripping through yamldecode
and then yamlencode
cannot produce an identical result.
YAML is a complex language and it supports a number of possibilities that the Terraform language's type system cannot represent. Therefore this YAML decoder supports only a subset of YAML 1.2, with restrictions including the following:
Although aliases to earlier anchors are supported, cyclic data structures (where a reference to a collection appears inside that collection) are not. If yamldecode
detects such a structure then it will return an error.
Only the type tags shown in the above table (or equivalent alternative representations of those same tags) are supported. Any other tags will result in an error.
Only one YAML document is permitted. If multiple documents are present in the given string then this function will return an error.
> yamldecode("hello: world")
{
"hello" = "world"
}
> yamldecode("true")
true
> yamldecode("{a: &foo [1, 2, 3], b: *foo}")
{
"a" = [
1,
2,
3,
]
"b" = [
1,
2,
3,
]
}
> yamldecode("{a: &foo [1, *foo, 3]}")
Error: Error in function call
Call to function "yamldecode" failed: cannot refer to anchor "foo" from inside
its own definition.
> yamldecode("{a: !not-supported foo}")
Error: Error in function call
Call to function "yamldecode" failed: unsupported tag "!not-supported".
jsondecode
is a similar operation using JSON instead of YAML.yamlencode
performs the opposite operation, encoding a value as YAML.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4