From 5f187deb48b771540a8c0b400ed06027115d2d93 Mon Sep 17 00:00:00 2001 From: Vishal Bhardwaj Date: Tue, 28 Sep 2021 23:53:58 -0500 Subject: [PATCH 1/2] feat: adding support to enable custom delimiter --- jsonpath.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jsonpath.go b/jsonpath.go index 6d8942a..a06c030 100644 --- a/jsonpath.go +++ b/jsonpath.go @@ -18,6 +18,12 @@ func (d DoesNotExist) Error() string { var invalidObjError = errors.New("invalid object") var pathDelimiter = "." +func SetDelimiter(delimiter string) { + if len(delimiter) > 0 { + pathDelimiter = delimiter + } +} + func tokenizePath(path string) ([]string, error) { var tokens []string for _, stem := range strings.Split(path, pathDelimiter) { From 7e6f064a3c33f6937a56225d62024f7e4e507879 Mon Sep 17 00:00:00 2001 From: Vishal Bhardwaj Date: Wed, 29 Sep 2021 00:22:50 -0500 Subject: [PATCH 2/2] adding unit tests --- jsonpath_test.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/jsonpath_test.go b/jsonpath_test.go index 8d52a2f..41b2fef 100644 --- a/jsonpath_test.go +++ b/jsonpath_test.go @@ -10,6 +10,7 @@ var data = map[string]interface{}{ "user": map[string]interface{}{ "firstname": "seth", "lastname": "rogen", + "address.local": "my temp address", }, "age": 35, "filmography": map[string]interface{}{ @@ -50,6 +51,16 @@ func TestGet(t *testing.T) { if _, ok:= err.(DoesNotExist); result != nil || !ok { t.Errorf("does not handle non-existant path correctly") } + + SetDelimiter("|") + result, err = Get(data, "user|address.local") + if err != nil { + t.Errorf("failed to get user|address.local") + } + if result != "my temp address" { + t.Errorf("wrong get value, wanted %v, got %v", "my temp address", result) + } + SetDelimiter(".") } func TestSet(t *testing.T) { @@ -191,4 +202,4 @@ func TestErrors(t *testing.T) { if _, ok := err.(DoesNotExist); !ok && err != nil { t.Errorf("error retrieving value %v", err) } -} \ No newline at end of file +}