Now that we have the necessary functions to deal with this in the low-level HCL API, it's more intuitive to use bare identifiers for these parameter names. This reinforces the idea that they are symbols being defined rather than arbitrary string expressions.
HCL User Functions Extension
This HCL extension allows a calling application to support user-defined functions.
Functions are defined via a specific block type, like this:
function "add" {
params = [a, b]
result = a + b
}
function "list" {
params = []
variadic_param = items
result = items
}
The extension is implemented as a pre-processor for cty.Body
objects. Given
a body that may contain functions, the DecodeUserFunctions
function searches
for blocks that define functions and returns a functions map suitable for
inclusion in a hcl.EvalContext
. It also returns a new cty.Body
that
contains the remainder of the content from the given body, allowing for
further processing of remaining content.
For more information, see the godoc reference.