Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: pluralsh/polly
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 399efc3f1e7a5cc1e02b2986af39ab4154a0ab7e
Choose a base ref
..
head repository: pluralsh/polly
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: b97a5d57d1a7e311e754e743c54bfe971307bec1
Choose a head ref
Showing with 36 additions and 14 deletions.
  1. +3 −0 .gitignore
  2. +33 −14 template/liquid.go
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -13,3 +13,6 @@

# Dependency directories (remove the comment below to include it)
# vendor/

# IDE
.idea
47 changes: 33 additions & 14 deletions template/liquid.go
Original file line number Diff line number Diff line change
@@ -5,35 +5,54 @@ import (

"github.com/Masterminds/sprig/v3"
"github.com/osteele/liquid"
"github.com/samber/lo"
)

var (
liquidEngine = liquid.NewEngine()
sprigFunctions = map[string]string{
liquidEngine = liquid.NewEngine()

// excludedSprigFunctions contains names of Spring functions that will be excluded.
excludedSprigFunctions = []string{"hello", "now", "uuidv4"}

// sprigFunctionNameAliases contains additional aliases for Sprig functions.
sprigFunctionNameAliases = map[string]string{
"toJson": "to_json",
"fromJson": "from_json",
"b64enc": "b64enc",
"b64dec": "b64dec",
"semverCompare": "semver_compare",
"sha256sum": "sha26sum",
"quote": "quote",
"squote": "squote",
"replace": "replace",
"coalesce": "coalesce",
}

// internalFunctions to register. These will override Sprig functions if same names are used.
internalFunctions = map[string]any{
"indent": indent,
"nindent": nindent,
"replace": strings.ReplaceAll,
"default": dfault,
"ternary": ternary,
}
)

func init() {
fncs := sprig.TxtFuncMap()
for key, name := range sprigFunctions {

excludedFunctions := excludedSprigFunctions
for k := range internalFunctions {
excludedFunctions = append(excludedFunctions, k)
}

for name, fnc := range fncs {
if !lo.Contains(excludedFunctions, name) {
liquidEngine.RegisterFilter(name, fnc)
}
}

for key, name := range sprigFunctionNameAliases {
liquidEngine.RegisterFilter(name, fncs[key])
}
liquidEngine.RegisterFilter("indent", indent)
liquidEngine.RegisterFilter("nindent", nindent)
liquidEngine.RegisterFilter("replace", strings.ReplaceAll)

liquidEngine.RegisterFilter("default", dfault)
liquidEngine.RegisterFilter("ternary", ternary)
for name, fnc := range internalFunctions {
liquidEngine.RegisterFilter(name, fnc)
}
}

func RenderLiquid(input []byte, bindings map[string]interface{}) ([]byte, error) {