Skip to content

Commit b6cc981

Browse files
committed
add check value of position in while cycle after increment
1 parent d2bfc4c commit b6cc981

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

src/jsonata/tokenizer.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,10 @@ def scan_regex(self) -> re.Pattern:
137137
if pattern == "":
138138
raise jexception.JException("S0301", self.position)
139139
self.position += 1
140-
current_char = self.path[self.position]
140+
if self.position < self.length:
141+
current_char = self.path[self.position]
142+
else:
143+
current_char = None
141144
# flags
142145
start = self.position
143146
while current_char == 'i' or current_char == 'm':

tests/string_test.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ def test_regex(self):
4242
assert (jsonata.Jsonata("($matcher := $eval('/^' & 'foo' & '/i'); $.$spread()[$.$keys() ~> $matcher])")
4343
.evaluate({"foo": 1, "bar": 2}) == {"foo": 1})
4444

45+
def test_regex_literal(self):
46+
expr = jsonata.Jsonata("/^test.*$/")
47+
result = expr.evaluate(None)
48+
assert result.pattern == "^test.*$"
49+
50+
def test_eval_regex(self):
51+
expr = jsonata.Jsonata("$eval('/^test.*$/')")
52+
result = expr.evaluate(None)
53+
assert result.pattern == "^test.*$"
54+
4555
#
4656
# Additional $split tests
4757
#

0 commit comments

Comments
 (0)