diff --git a/pkg/configutils/variable.go b/pkg/configutils/variable.go index 448f6a6..ade4b37 100644 --- a/pkg/configutils/variable.go +++ b/pkg/configutils/variable.go @@ -8,6 +8,7 @@ import ( stringutil "github.com/iwind/TeaGo/utils/string" "net/url" "regexp" + "strconv" "strings" "sync" ) @@ -183,6 +184,9 @@ func doStringModifiers(value string, modifiers []string) string { value = strings.ToLower(value) case "toUpperCase": value = strings.ToUpper(value) + case "quote": + value = strconv.Quote(value) + } } return value diff --git a/pkg/configutils/variable_test.go b/pkg/configutils/variable_test.go index 1af4ebb..0d44998 100644 --- a/pkg/configutils/variable_test.go +++ b/pkg/configutils/variable_test.go @@ -115,6 +115,29 @@ func TestParseVariables_Modifier(t *testing.T) { } return "${" + varName + "}" })) + + // quote + t.Log("quote(abc)", "=>", configutils.ParseVariables("${var|quote}", func(varName string) (value string) { + switch varName { + case "var": + return "abc" + } + return "${" + varName + "}" + })) + t.Log("quote(\"ABC\"123)", "=>", configutils.ParseVariables("${var|quote}", func(varName string) (value string) { + switch varName { + case "var": + return "\"ABC\"123" + } + return "${" + varName + "}" + })) + t.Log("quote('ABC'123)", "=>", configutils.ParseVariables("${var|quote}", func(varName string) (value string) { + switch varName { + case "var": + return "'ABC'123" + } + return "${" + varName + "}" + })) } func TestParseHolders(t *testing.T) {