Author: Antonio Cuni <[email protected]>
Branch: fastjson
Changeset: r64831:ee4fe752ea20
Date: 2013-06-06 17:22 +0200
http://bitbucket.org/pypy/pypy/changeset/ee4fe752ea20/
Log: rename JSONDecoder.i to .pos, just because it's a better name
diff --git a/pypy/module/_fastjson/interp_decoder.py
b/pypy/module/_fastjson/interp_decoder.py
--- a/pypy/module/_fastjson/interp_decoder.py
+++ b/pypy/module/_fastjson/interp_decoder.py
@@ -36,14 +36,14 @@
def __init__(self, space, s):
self.space = space
self.s = s
- self.i = 0
+ self.pos = 0
self.last_type = TYPE_UNKNOWN
def eof(self):
- return self.i == len(self.s)
+ return self.pos == len(self.s)
def peek(self):
- return self.s[self.i]
+ return self.s[self.pos]
def peek_maybe(self):
if self.eof():
@@ -53,13 +53,13 @@
def next(self):
ch = self.peek()
- self.i += 1
+ self.pos += 1
return ch
def unget(self):
- i2 = self.i - 1
- assert i2 > 0 # so that we can use self.i as slice start
- self.i = i2
+ i2 = self.pos - 1
+ assert i2 > 0 # so that we can use self.pos as slice start
+ self.pos = i2
def getslice(self, start, end):
assert start > 0
@@ -67,14 +67,14 @@
return self.s[start:end]
def skip_whitespace(self):
- i = self.i
+ i = self.pos
while i < len(self.s):
ch = self.s[i]
if is_whitespace(ch):
i+=1
else:
break
- self.i = i
+ self.pos = i
@specialize.arg(1)
def _raise(self, msg, *args):
@@ -105,35 +105,35 @@
return self.decode_false()
else:
self._raise("No JSON object could be decoded: unexpected '%s' at
char %d",
- ch, self.i)
+ ch, self.pos)
def decode_null(self):
N = len('ull')
- if (self.i+N <= len(self.s) and
+ if (self.pos+N <= len(self.s) and
self.next() == 'u' and
self.next() == 'l' and
self.next() == 'l'):
return self.space.w_None
- self._raise("Error when decoding null at char %d", self.i)
+ self._raise("Error when decoding null at char %d", self.pos)
def decode_true(self):
N = len('rue')
- if (self.i+N <= len(self.s) and
+ if (self.pos+N <= len(self.s) and
self.next() == 'r' and
self.next() == 'u' and
self.next() == 'e'):
return self.space.w_True
- self._raise("Error when decoding true at char %d", self.i)
+ self._raise("Error when decoding true at char %d", self.pos)
def decode_false(self):
N = len('alse')
- if (self.i+N <= len(self.s) and
+ if (self.pos+N <= len(self.s) and
self.next() == 'a' and
self.next() == 'l' and
self.next() == 's' and
self.next() == 'e'):
return self.space.w_False
- self._raise("Error when decoding false at char %d", self.i)
+ self._raise("Error when decoding false at char %d", self.pos)
def decode_numeric(self):
intval = self.parse_integer()
@@ -179,7 +179,7 @@
"Parse a sequence of digits as a decimal number. No sign allowed"
intval = 0
count = 0
- i = self.i
+ i = self.pos
while i < len(self.s):
ch = self.s[i]
if ch.isdigit():
@@ -190,11 +190,11 @@
break
if count == 0:
self._raise("Expected digit at char %d", i)
- self.i = i
+ self.pos = i
return intval, count
def decode_array(self):
- start = self.i
+ start = self.pos
w_list = self.space.newlist([])
self.skip_whitespace()
while not self.eof():
@@ -214,12 +214,12 @@
pass
else:
self._raise("Unexpected '%s' when decoding array (char %d)",
- ch, self.i)
+ ch, self.pos)
self._raise("Unterminated array starting at char %d", start)
def decode_object(self):
- start = self.i
+ start = self.pos
w_dict = self.space.newdict()
while not self.eof():
ch = self.peek()
@@ -237,7 +237,7 @@
break
ch = self.next()
if ch != ':':
- self._raise("No ':' found at char %d", self.i)
+ self._raise("No ':' found at char %d", self.pos)
self.skip_whitespace()
#
w_value = self.decode_any()
@@ -252,12 +252,12 @@
pass
else:
self._raise("Unexpected '%s' when decoding object (char %d)",
- ch, self.i)
+ ch, self.pos)
self._raise("Unterminated object starting at char %d", start)
def decode_string(self):
- start = self.i
- i = self.i
+ start = self.pos
+ i = self.pos
bits = 0
while i < len(self.s):
# this loop is a fast path for strings which do not contain escape
@@ -274,11 +274,11 @@
# ascii only, fast path
content_unicode = strslice2unicode_ascii(self.s, start,
i-1)
self.last_type = TYPE_STRING
- self.i = i
+ self.pos = i
return self.space.wrap(content_unicode)
elif ch == '\\':
content_so_far = self.getslice(start, i-1)
- self.i = i-1
+ self.pos = i-1
return self.decode_string_escaped(start, content_so_far)
self._raise("Unterminated string starting at char %d", start)
@@ -314,16 +314,16 @@
elif ch == 'u':
return self.decode_escape_sequence_unicode(builder)
else:
- self._raise("Invalid \\escape: %s (char %d)", ch, self.i-1)
+ self._raise("Invalid \\escape: %s (char %d)", ch, self.pos-1)
def decode_escape_sequence_unicode(self, builder):
# at this point we are just after the 'u' of the \u1234 sequence.
- hexdigits = self.getslice(self.i, self.i+4)
- self.i += 4
+ hexdigits = self.getslice(self.pos, self.pos+4)
+ self.pos += 4
try:
uchr = unichr(int(hexdigits, 16))
except ValueError:
- self._raise("Invalid \uXXXX escape (char %d)", self.i-1)
+ self._raise("Invalid \uXXXX escape (char %d)", self.pos-1)
return # help the annotator to know that we'll never go beyond
# this point
#
@@ -338,7 +338,7 @@
w_res = decoder.decode_any()
decoder.skip_whitespace()
if not decoder.eof():
- start = decoder.i
+ start = decoder.pos
end = len(decoder.s)
raise operationerrfmt(space.w_ValueError, "Extra data: char %d - %d",
start, end)
return w_res
diff --git a/pypy/module/_fastjson/test/test__fastjson.py
b/pypy/module/_fastjson/test/test__fastjson.py
--- a/pypy/module/_fastjson/test/test__fastjson.py
+++ b/pypy/module/_fastjson/test/test__fastjson.py
@@ -4,7 +4,7 @@
def test_skip_whitespace():
dec = JSONDecoder('fake space', ' hello ')
- assert dec.i == 0
+ assert dec.pos == 0
dec.skip_whitespace()
assert dec.next() == 'h'
assert dec.next() == 'e'
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit