From e378a93779d41adad99f8dae16795036df4f7673 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Sat, 18 Jan 2025 14:37:09 -0800 Subject: [PATCH 1/3] Fix regexp which ends in /i or /m --- src/test/java/com/dashjoin/jsonata/StringTest.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/test/java/com/dashjoin/jsonata/StringTest.java b/src/test/java/com/dashjoin/jsonata/StringTest.java index 2ca01e6..49561da 100644 --- a/src/test/java/com/dashjoin/jsonata/StringTest.java +++ b/src/test/java/com/dashjoin/jsonata/StringTest.java @@ -127,11 +127,4 @@ public void evalTest() { + " $eval('$data.Wert1')\n" + ")").evaluate(null)); } - - @Disabled - @Test - public void replaceTest() { - Assertions.assertEquals("http://example.org/test", - jsonata("$replace($, /{par}/, '')").evaluate("http://example.org/test{par}")); - } } From 6490fc8ecf68b478da967e169ffa1cc7953ee593 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Sat, 18 Jan 2025 14:51:52 -0800 Subject: [PATCH 2/3] Minor cleanup --- src/main/java/com/dashjoin/jsonata/Tokenizer.java | 6 +++++- .../java/com/dashjoin/jsonata/StringTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/dashjoin/jsonata/Tokenizer.java b/src/main/java/com/dashjoin/jsonata/Tokenizer.java index 503373d..1acbad3 100644 --- a/src/main/java/com/dashjoin/jsonata/Tokenizer.java +++ b/src/main/java/com/dashjoin/jsonata/Tokenizer.java @@ -142,7 +142,11 @@ Pattern scanRegex() { start = position; while (currentChar == 'i' || currentChar == 'm') { position++; - currentChar = path.charAt(position); + if (position < length) { + currentChar = path.charAt(position); + } else { + currentChar = 0; + } } flags = path.substring(start, position) + 'g'; diff --git a/src/test/java/com/dashjoin/jsonata/StringTest.java b/src/test/java/com/dashjoin/jsonata/StringTest.java index 49561da..85bed8e 100644 --- a/src/test/java/com/dashjoin/jsonata/StringTest.java +++ b/src/test/java/com/dashjoin/jsonata/StringTest.java @@ -1,6 +1,7 @@ package com.dashjoin.jsonata; import static com.dashjoin.jsonata.Jsonata.jsonata; + import java.util.Arrays; import java.util.Map; import org.junit.jupiter.api.Assertions; @@ -127,4 +128,18 @@ public void evalTest() { + " $eval('$data.Wert1')\n" + ")").evaluate(null)); } + + @Test + public void regexTest() { + Assertions.assertEquals(Map.of("foo", 1), jsonata( + "($matcher := $eval('/^' & 'foo' & '/i'); $.$spread()[$.$keys() ~> $matcher])") + .evaluate(Map.of("foo", 1, "bar", 2))); + } + + @Disabled + @Test + public void replaceTest() { + Assertions.assertEquals("http://example.org/test", + jsonata("$replace($, /{par}/, '')").evaluate("http://example.org/test{par}")); + } } From 3dfcc17134bf5cc94917194002d79ddd8fdbfb64 Mon Sep 17 00:00:00 2001 From: Robert Yokota Date: Sat, 18 Jan 2025 14:52:26 -0800 Subject: [PATCH 3/3] Minor cleanup --- src/test/java/com/dashjoin/jsonata/StringTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/dashjoin/jsonata/StringTest.java b/src/test/java/com/dashjoin/jsonata/StringTest.java index 85bed8e..5009b4d 100644 --- a/src/test/java/com/dashjoin/jsonata/StringTest.java +++ b/src/test/java/com/dashjoin/jsonata/StringTest.java @@ -1,7 +1,6 @@ package com.dashjoin.jsonata; import static com.dashjoin.jsonata.Jsonata.jsonata; - import java.util.Arrays; import java.util.Map; import org.junit.jupiter.api.Assertions;