Template Helpers
Helpers
In addition to Go’s text/template defaults,
hof adds the following functions
There are a number of additional helpers provided.
Notes:
- Many of these are based on the Go stdlib functions with the same name.
- Args can be literal, a .Variable, or the result of another function. See Go’s documentation
- It can be advantageous to do as many manipulations in CUE rather than in the template system.
text/template documentation can be found here:
https://pkg.go.dev/text/template
Encode to a data format:
json({{ json .Data }})yaml({{ yaml .Data }})toml({{ toml .Data }})xml({{ xml .Data }})
Value helpers:
dict({{ ... (dict "key1" "val1" "key2" .Value ...) }}) - create a map on the fly, useful for passing multiple values to partialslookup({{ lookup "path.to.value" .Value }}) - returns the value at hofstadter-io/dotpath from the given valuepretty({{ pretty .Value }}) uses https://github.com/kr/prettyprintf({{ printf "%s %d" .String .Number }})
Casings conversion helpers:
lower({{ lower .String }}) (lowercase)upper({{ upper .String }}) (UPPERCASE)title({{ title .String }}) (Titlecasestringpascal({{ pascal .String }}) (PascalCaseString)camel({{ camel .String }}) (camelCaseString)Camel({{ Camel .String }}) (camel + title)snake({{ snake .String }}) (snake_case_string)SNAKE({{ SNAKE .String }}) (SNAKE_CASE_STRING)kebab({{ kebab .String }}) (kebab-case-string)KEBAB({{ KEBAB .String }}) (KEBAB-CASE-STRING)
String processing helpers:
concat({{ concat "foo" "bar" }})join({{ join ", " "foo" "bar" }})contains({{ contains .String .Substr }})split({{ split .String .Separator }})replace({{ replace .String .Old .New .Count }})hasprefix({{ hasprefix .String .Prefix }})hassuffix({{ hassuffix .String .Suffix }})trimprefix({{ trimprefix .String .Prefix }})trimsuffix({{ trimsuffix .String .Suffix }})trimto(alias for trimto_first)trimfrom(alias for trimfrom_first)trimto_first({{ trimto_first .String .Substr .Keep }}) Trim a string until the first Substring, possibly keeping the substringtrimfrom_first({{ trimfrom_first .String .Substr .Keep }})trimto_last({{ trimto_last .String .Substr .Keep }})trimfrom_last({{ trimfrom_last .String .Substr .Keep }})substr({{ substr .String .StartInt .EndInt }})getprefix({{ getprefix .String .Substr }}) (opposite oftrimprefix)getsuffix({{ getsuffix .String .Substr }})getbetween({{ getbetween .String .LhsSubstr .RhsSubstr }})
The indent helper is disucssed in the
section on indentation.
Other helpers:
identity({{ identity .Value }}) - returns Value, ah mathsgokind({{ gokind .Value }}) - returns the Go reflect.Kind as a stringbuiltin({{ builtin }}) - returns true if the string is a known Go builtinfile({{ file "path/to/file.txt" }}) - loads a file from diskrender({{ $content := render "partial-name" <context> }}) - render a partial template to a variable