feat: use 28586 to escape $ notation

This commit is contained in:
debugtalk
2021-09-29 13:10:09 +08:00
parent d37b801477
commit a95be1943d
2 changed files with 20 additions and 4 deletions

View File

@@ -69,6 +69,14 @@ func parseString(raw string, variablesMapping map[string]interface{}) interface{
parsedString += remainedString[0:startPosition]
remainedString = remainedString[startPosition:]
// search $$, use $$ to escape $ notation
if strings.HasPrefix(remainedString, "$$") { // found $$
matchStartPosition += 2
parsedString += "$"
remainedString = remainedString[2:]
continue
}
// search variable like ${var} or $var
varMatched := regexCompileVariable.FindStringSubmatch(remainedString)
if len(varMatched) == 3 {

View File

@@ -109,10 +109,18 @@ func TestParseDataStringWithVariablesAbnormal(t *testing.T) {
expr string
expect interface{}
}{
{"ABC$var_1{", "ABCabc{"},
{"{ABC$var_1{}a}", "{ABCabc{}a}"},
{"AB{C$var_1{}a}", "AB{Cabc{}a}"},
{"ABC$var_1}", "ABCabc}"},
{"ABC$var_1{", "ABCabc{"}, // {
{"ABC$var_1}", "ABCabc}"}, // }
{"{ABC$var_1{}a}", "{ABCabc{}a}"}, // {xx}
{"AB{C$var_1{}a}", "AB{Cabc{}a}"}, // {xx{}x}
{"ABC$$var_1{", "ABC$var_1{"}, // $$
{"ABC$$$var_1{", "ABC$abc{"}, // $$$
{"ABC$$$$var_1{", "ABC$$var_1{"}, // $$$$
{"ABC$var_1${", "ABCabc${"}, // ${
{"ABC$var_1${a", "ABCabc${a"}, // ${
{"ABC$var_1$}a", "ABCabc$}a"}, // $}
{"ABC$var_1}{a", "ABCabc}{a"}, // }{
{"ABC$var_1{}a", "ABCabc{}a"}, // {}
}
for _, data := range testData {