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):