Skip to content

Commit 85e6207

Browse files
authored
Merge pull request #3 from jg-rp/eof-inside-filter
Handle EOF when lexing a filter expression
2 parents ff1f0f6 + 0d34a10 commit 85e6207

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Python JSONPath RFC 9535 Change Log
22

3+
## Version 0.1.2 (unreleased)
4+
5+
**Fixes**
6+
7+
- Handle end of query when lexing inside a filter expression.
8+
39
## Version 0.1.1
410

511
Fix PyPi classifiers and README.

jsonpath_rfc9535/lex.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,11 @@ def lex_inside_filter(l: Lexer) -> Optional[StateFn]: # noqa: D103, PLR0915, PL
294294
l.ignore_whitespace()
295295
c = l.next()
296296

297-
if c in ("", "]"):
297+
if c == "":
298+
l.error("unclosed bracketed selection")
299+
return None
300+
301+
if c == "]":
298302
l.filter_depth -= 1
299303
if len(l.paren_stack) == 1:
300304
l.error("unbalanced parentheses")

tests/test_errors.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ def test_unclosed_selection_list(env: JSONPathEnvironment) -> None:
2323
env.compile("$[1,2")
2424

2525

26+
def test_unclosed_selection_list_inside_filter(env: JSONPathEnvironment) -> None:
27+
with pytest.raises(
28+
JSONPathSyntaxError, match=r"unclosed bracketed selection, line 1, column 10"
29+
):
30+
env.compile("$[?@.a < 1")
31+
32+
2633
def test_function_missing_param(env: JSONPathEnvironment) -> None:
2734
with pytest.raises(JSONPathTypeError):
2835
env.compile("$[?(length()==1)]")

0 commit comments

Comments
 (0)