Mercurial > jpath
changeset 15:0b466831544d
compatibility with python 2.7+
| author | Wojciech Lichota <wojciech.lichota@stxnext.pl> |
|---|---|
| date | Mon, 10 Jan 2011 13:14:36 +0100 |
| parents | b62fcc1cf4ac |
| children | 348264a60229 |
| files | jpath.py |
| diffstat | 1 files changed, 13 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/jpath.py Mon Jan 10 10:33:25 2011 +0100 +++ b/jpath.py Mon Jan 10 13:14:36 2011 +0100 @@ -58,6 +58,15 @@ __all__ = ['get', 'get_all'] __version__ = '1.0' + +def _pop_token(tokens): + try: + token = next(tokens) + except StopIteration: + token = NoneToken() + return token + + class Tokenizer: # list of all token classes marked with @Tokenizer.token tokens = {} @@ -105,10 +114,7 @@ @staticmethod def apply(tokens, data): - try: - token, *tokens = tokens - except ValueError: - token = NoneToken() + token = _pop_token(tokens) for value in token.parse(tokens, data): yield value @@ -219,10 +225,7 @@ self.operator = filter_operator def parse(self, tokens, data): - try: - token, *tokens = tokens - except ValueError: - token = NoneToken() + token = _pop_token(tokens) try: # If it's a dict, iterate over values, not keys. data = data.values() @@ -250,10 +253,7 @@ self.value = None def parse(self, tokens, data): - try: - token, *tokens = tokens - except ValueError: - token = NoneToken() + token = _pop_token(tokens) try: # If it's a dict, iterate over values, not keys. data = data.values() @@ -303,10 +303,7 @@ # recursively idefinitely. stack.append(item) yield item - try: - token, *tokens = tokens - except ValueError: - token = NoneToken() + token = _pop_token(tokens) for item in dive(data): try: for value in token.parse(tokens, item):
