Merge pull request #587 from replicatedhq/template-delims

Allow for repl{{ template delim
This commit is contained in:
Ethan Mosbaugh
2022-06-02 13:09:51 -07:00
committed by GitHub
3 changed files with 74 additions and 14 deletions

View File

@@ -8,7 +8,7 @@ spec:
selector:
- app=example
- component=nginx
namespace: repl{{ Namespace }}
namespace: default
limits:
maxAge: 720h # 30*24
maxLines: 10000

View File

@@ -25,20 +25,35 @@ func Bool(text string, data interface{}) (bool, error) {
}
func Execute(text string, data interface{}) (string, error) {
tmpl, err := template.New(text).
Delims("{{repl", "}}").
Funcs(funcMap).
Parse(text)
if err != nil {
return "", err
delims := []struct {
ldelim string
rdelim string
}{
{"{{repl", "}}"},
{"repl{{", "}}"},
}
var buf bytes.Buffer
err = func() (err error) {
defer errRecover(&err)
err = tmpl.Execute(&buf, data)
return
}()
return buf.String(), err
curText := text
for _, d := range delims {
tmpl, err := template.New(curText).
Delims(d.ldelim, d.rdelim).
Funcs(funcMap).
Parse(curText)
if err != nil {
return "", err
}
var buf bytes.Buffer
err = func() (err error) {
defer errRecover(&err)
err = tmpl.Execute(&buf, data)
return
}()
if err != nil {
return "", err
}
curText = buf.String()
}
return curText, nil
}
func RegisterFunc(key string, fn interface{}) {

View File

@@ -0,0 +1,45 @@
package convert
import "testing"
func TestExecute(t *testing.T) {
type args struct {
text string
data interface{}
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
name: "{{repl",
args: args{
text: "{{repl printf \"%s\" \"hello\"}}",
data: nil,
},
want: "hello",
},
{
name: "repl{{",
args: args{
text: "repl{{ printf \"%s\" \"hello\"}}",
data: nil,
},
want: "hello",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := Execute(tt.args.text, tt.args.data)
if (err != nil) != tt.wantErr {
t.Errorf("Execute() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("Execute() = %v, want %v", got, tt.want)
}
})
}
}