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
+8
View File
@@ -69,6 +69,14 @@ func parseString(raw string, variablesMapping map[string]interface{}) interface{
parsedString += remainedString[0:startPosition] parsedString += remainedString[0:startPosition]
remainedString = remainedString[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 // search variable like ${var} or $var
varMatched := regexCompileVariable.FindStringSubmatch(remainedString) varMatched := regexCompileVariable.FindStringSubmatch(remainedString)
if len(varMatched) == 3 { if len(varMatched) == 3 {
+12 -4
View File
@@ -109,10 +109,18 @@ func TestParseDataStringWithVariablesAbnormal(t *testing.T) {
expr string expr string
expect interface{} expect interface{}
}{ }{
{"ABC$var_1{", "ABCabc{"}, {"ABC$var_1{", "ABCabc{"}, // {
{"{ABC$var_1{}a}", "{ABCabc{}a}"}, {"ABC$var_1}", "ABCabc}"}, // }
{"AB{C$var_1{}a}", "AB{Cabc{}a}"}, {"{ABC$var_1{}a}", "{ABCabc{}a}"}, // {xx}
{"ABC$var_1}", "ABCabc}"}, {"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 { for _, data := range testData {