summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelly <skelly@dimagi.com>2018-07-27 14:06:26 +0200
committerSimon Kelly <skelly@dimagi.com>2018-07-27 14:06:26 +0200
commit1310c0c63d3db1ff3eea36501f7d68958eae5f8b (patch)
tree181cfc9fdd7303ddf49c24b983c882639e4ce94f
parent7ec055619e6cafb3f98a82713c7198847c36a4cc (diff)
downloadjsonpath-rw-1310c0c63d3db1ff3eea36501f7d68958eae5f8b.tar.gz
allow # in IDs
-rw-r--r--jsonpath_rw/lexer.py2
-rw-r--r--tests/test_lexer.py3
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.%')