From 8506d1dc86395b4bd7cb28016ff39b889b4c8fab Mon Sep 17 00:00:00 2001 From: quobix Date: Tue, 2 Jul 2024 11:13:14 -0400 Subject: [PATCH] updated regex for path conversions --- utils/utils.go | 8 ++++++-- utils/utils_test.go | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index d8ff1f7..fdb041b 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -588,7 +588,7 @@ func IsHttpVerb(verb string) bool { // define bracket name expression var ( - bracketNameExp = regexp.MustCompile(`^(\w+)\['?(\w+)'?]$`) + bracketNameExp = regexp.MustCompile(`^(\w+)\['?([\w/]+)'?]$`) pathCharExp = regexp.MustCompile(`[%=;~.]`) ) @@ -689,8 +689,12 @@ func ConvertComponentIdIntoPath(id string) (string, string) { // if there are brackets, shift the path to encapsulate them correctly. if len(brackets) > 0 { + + //bracketNameExp/. + key := bracketNameExp.ReplaceAllString(segs[i], "$1") + val := strings.ReplaceAll(bracketNameExp.ReplaceAllString(segs[i], "$2"), "/", "~1") cleaned = append(cleaned[:i], - append([]string{bracketNameExp.ReplaceAllString(segs[i], "$1/$2")}, cleaned[i:]...)...) + append([]string{fmt.Sprintf("%s/%s", key, val)}, cleaned[i:]...)...) continue } cleaned = append(cleaned, segs[i]) diff --git a/utils/utils_test.go b/utils/utils_test.go index 298d7fb..f9c1c5d 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -817,6 +817,11 @@ func TestConvertComponentIdIntoPath_Alt2(t *testing.T) { assert.Equal(t, "#/chicken/chips/pizza/cakes/0/burgers/2", path) } +func TestConvertComponentIdIntoPath_Alt3(t *testing.T) { + _, path := ConvertComponentIdIntoPath("chicken.chips['/one/two/pizza'].cakes[0].burgers[2]") + assert.Equal(t, "#/chicken/chips/~1one~1two~1pizza/cakes/0/burgers/2", path) +} + func TestDetectCase(t *testing.T) { assert.Equal(t, PascalCase, DetectCase("PizzaPie")) assert.Equal(t, CamelCase, DetectCase("anyoneForTennis"))