diff options
author | Simon Kelly <skelly@dimagi.com> | 2018-07-27 14:06:26 +0200 |
---|---|---|
committer | Simon Kelly <skelly@dimagi.com> | 2018-07-27 14:06:26 +0200 |
commit | 1310c0c63d3db1ff3eea36501f7d68958eae5f8b (patch) | |
tree | 181cfc9fdd7303ddf49c24b983c882639e4ce94f | |
parent | 7ec055619e6cafb3f98a82713c7198847c36a4cc (diff) | |
download | jsonpath-rw-1310c0c63d3db1ff3eea36501f7d68958eae5f8b.tar.gz |
allow # in IDs
-rw-r--r-- | jsonpath_rw/lexer.py | 2 | ||||
-rw-r--r-- | tests/test_lexer.py | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/jsonpath_rw/lexer.py b/jsonpath_rw/lexer.py index aa28ff5..b85b425 100644 --- a/jsonpath_rw/lexer.py +++ b/jsonpath_rw/lexer.py @@ -61,7 +61,7 @@ class JsonPathLexer(object): t_ignore = ' \t' def t_ID(self, t): - r'[a-zA-Z_@][a-zA-Z0-9_@\-]*' + r'[a-zA-Z_@#][a-zA-Z0-9_@\-]*' t.type = self.reserved_words.get(t.value, 'ID') return t diff --git a/tests/test_lexer.py b/tests/test_lexer.py index 9d9fe38..481215d 100644 --- a/tests/test_lexer.py +++ b/tests/test_lexer.py @@ -53,6 +53,7 @@ class TestLexer(unittest.TestCase): self.assert_lex_equiv('`this`', [self.token('this', 'NAMED_OPERATOR')]) self.assert_lex_equiv('|', [self.token('|', '|')]) self.assert_lex_equiv('where', [self.token('where', 'WHERE')]) + self.assert_lex_equiv('a.#text', [self.token('a', 'ID'), self.token('.', '.'), self.token('#text', 'ID')]) def test_basic_errors(self): def tokenize(s): @@ -66,4 +67,4 @@ class TestLexer(unittest.TestCase): self.assertRaises(JsonPathLexerError, tokenize, '"`') self.assertRaises(JsonPathLexerError, tokenize, "'`") self.assertRaises(JsonPathLexerError, tokenize, '?') - self.assertRaises(JsonPathLexerError, tokenize, '$.foo.bar.#') + self.assertRaises(JsonPathLexerError, tokenize, '$.foo.bar.%') |