Skip to content

Commit 5a87847

Browse files
committed
[lexer] Supports root-node token
1 parent a63436f commit 5a87847

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

jmespath/lexer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class Lexer(object):
1717
',': 'comma',
1818
':': 'colon',
1919
'@': 'current',
20+
'$': 'root',
2021
'(': 'lparen',
2122
')': 'rparen',
2223
'{': 'lbrace',

tests/test_lexer.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,23 @@ def test_adds_quotes_when_invalid_json(self):
143143
]
144144
)
145145

146+
def test_root_reference(self):
147+
tokens = list(self.lexer.tokenize('$[0]'))
148+
self.assertEqual(
149+
tokens,
150+
[{'type': 'root', 'value': '$',
151+
'start': 0, 'end': 1},
152+
{'type': 'lbracket', 'value':
153+
'[', 'start': 1, 'end': 2},
154+
{'type': 'number', 'value': 0,
155+
'start': 2, 'end': 3},
156+
{'type': 'rbracket', 'value': ']',
157+
'start': 3, 'end': 4},
158+
{'type': 'eof', 'value': '',
159+
'start': 4, 'end': 4}
160+
]
161+
)
162+
146163
def test_unknown_character(self):
147164
with self.assertRaises(LexerError) as e:
148165
tokens = list(self.lexer.tokenize('foo[0^]'))

0 commit comments

Comments
 (0)