Update KV ignore whitespace before and after = (#2236)

* Update KV ignore whitespace before and after `=`

* Update helpers.go

Don't need whitespace infront of KEY

* Add some tests to ensure edge cases

* Ensure quoted and unquoted values act the same
This commit is contained in:
Laurence Jones 2023-05-26 15:35:46 +01:00 committed by GitHub
parent 6720d89845
commit 4fbc3402fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View file

@ -1399,6 +1399,18 @@ func TestParseKv(t *testing.T) {
expected: map[string]string{"foo": "bar=toto"},
expr: `ParseKV(value, out, "a")`,
},
{
name: "ParseKV() test: empty unquoted string",
value: `foo= bar=toto`,
expected: map[string]string{"bar": "toto", "foo": ""},
expr: `ParseKV(value, out, "a")`,
},
{
name: "ParseKV() test: empty quoted string ",
value: `foo="" bar=toto`,
expected: map[string]string{"bar": "toto", "foo": ""},
expr: `ParseKV(value, out, "a")`,
},
}
for _, tc := range tests {

View file

@ -51,7 +51,7 @@ var dbClient *database.Client
var exprFunctionOptions []expr.Option
var keyValuePattern = regexp.MustCompile(`\s*(?P<key>[^=\s]+)\s*=\s*(?:"(?P<quoted_value>[^"\\]*(?:\\.[^"\\]*)*)"|(?P<value>[^=\s]+))`)
var keyValuePattern = regexp.MustCompile(`(?P<key>[^=\s]+)=(?:"(?P<quoted_value>[^"\\]*(?:\\.[^"\\]*)*)"|(?P<value>[^=\s]+)|\s*)`)
func GetExprOptions(ctx map[string]interface{}) []expr.Option {
ret := []expr.Option{}