Skip to content

Commit b840954

Browse files
committed
Improve filter selector class and parse function names
1 parent 4da76fa commit b840954

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

jsonpath_rfc9535/parse.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from .segments import JSONPathChildSegment
3535
from .segments import JSONPathRecursiveDescentSegment
3636
from .segments import JSONPathSegment
37-
from .selectors import Filter
37+
from .selectors import FilterSelector
3838
from .selectors import IndexSelector
3939
from .selectors import JSONPathSelector
4040
from .selectors import NameSelector
@@ -113,9 +113,6 @@ def __init__(self, *, env: JSONPathEnvironment) -> None:
113113
TokenType.TRUE: self.parse_boolean,
114114
}
115115

116-
# TODO: can a function argument be a grouped expression?
117-
# TODO: can a function argument contain a !?
118-
119116
self.function_argument_map: Dict[
120117
TokenType, Callable[[TokenStream], Expression]
121118
] = {
@@ -291,7 +288,7 @@ def parse_bracketed_selection(self, stream: TokenStream) -> List[JSONPathSelecto
291288
)
292289
)
293290
elif stream.current.type_ == TokenType.FILTER:
294-
selectors.append(self.parse_filter(stream))
291+
selectors.append(self.parse_filter_selector(stream))
295292
elif stream.current.type_ == TokenType.EOF:
296293
raise JSONPathSyntaxError(
297294
"unexpected end of query", token=stream.current
@@ -320,9 +317,9 @@ def parse_bracketed_selection(self, stream: TokenStream) -> List[JSONPathSelecto
320317

321318
return selectors
322319

323-
def parse_filter(self, stream: TokenStream) -> Filter:
320+
def parse_filter_selector(self, stream: TokenStream) -> FilterSelector:
324321
tok = stream.next_token()
325-
expr = self.parse_filter_selector(stream)
322+
expr = self.parse_filter_expression(stream)
326323

327324
if isinstance(expr, FunctionExtension):
328325
func = self.env.function_extensions.get(expr.name)
@@ -342,7 +339,7 @@ def parse_filter(self, stream: TokenStream) -> Filter:
342339
token=expr.token,
343340
)
344341

345-
return Filter(
342+
return FilterSelector(
346343
env=self.env,
347344
token=tok,
348345
expression=FilterExpression(token=expr.token, expression=expr),
@@ -392,15 +389,17 @@ def parse_prefix_expression(self, stream: TokenStream) -> Expression:
392389
return PrefixExpression(
393390
tok,
394391
operator="!",
395-
right=self.parse_filter_selector(stream, precedence=self.PRECEDENCE_PREFIX),
392+
right=self.parse_filter_expression(
393+
stream, precedence=self.PRECEDENCE_PREFIX
394+
),
396395
)
397396

398397
def parse_infix_expression(
399398
self, stream: TokenStream, left: Expression
400399
) -> Expression:
401400
tok = stream.next_token()
402401
precedence = self.PRECEDENCES.get(tok.type_, self.PRECEDENCE_LOWEST)
403-
right = self.parse_filter_selector(stream, precedence)
402+
right = self.parse_filter_expression(stream, precedence)
404403
operator = self.BINARY_OPERATORS[tok.type_]
405404

406405
if operator in self.COMPARISON_OPERATORS:
@@ -425,7 +424,7 @@ def parse_infix_expression(
425424

426425
def parse_grouped_expression(self, stream: TokenStream) -> Expression:
427426
stream.next_token()
428-
expr = self.parse_filter_selector(stream)
427+
expr = self.parse_filter_expression(stream)
429428
stream.next_token()
430429

431430
while stream.current.type_ != TokenType.RPAREN:
@@ -497,7 +496,7 @@ def parse_function_extension(self, stream: TokenStream) -> Expression:
497496
),
498497
)
499498

500-
def parse_filter_selector(
499+
def parse_filter_expression(
501500
self, stream: TokenStream, precedence: int = PRECEDENCE_LOWEST
502501
) -> Expression:
503502
try:

jsonpath_rfc9535/query.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""A compiled JSONPath ready to be applied to a JSON-like value."""
1+
"""A compiled JSONPath expression ready to be applied to JSON-like data."""
22

33
from __future__ import annotations
44

@@ -20,7 +20,7 @@
2020

2121

2222
class JSONPathQuery:
23-
"""A compiled JSONPath expression ready to be applied to a JSON-like value.
23+
"""A compiled JSONPath expression ready to be applied to JSON-like data.
2424
2525
Arguments:
2626
env: The `JSONPathEnvironment` this query is bound to.

jsonpath_rfc9535/selectors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def resolve(self, node: JSONPathNode) -> Iterable[JSONPathNode]:
213213
yield node.new_child(element, i)
214214

215215

216-
class Filter(JSONPathSelector):
216+
class FilterSelector(JSONPathSelector):
217217
"""Filter array/list items or dict/object values with a filter expression."""
218218

219219
__slots__ = ("expression",)
@@ -233,7 +233,7 @@ def __str__(self) -> str:
233233

234234
def __eq__(self, __value: object) -> bool:
235235
return (
236-
isinstance(__value, Filter)
236+
isinstance(__value, FilterSelector)
237237
and self.expression == __value.expression
238238
and self.token == __value.token
239239
)

0 commit comments

Comments
 (0)