[pypy-svn] r48714 - pypy/branch/ropes-unicode/pypy/objspace/std
cfbolz at codespeak.net
cfbolz at codespeak.net
Thu Nov 15 18:22:27 CET 2007
Author: cfbolz
Date: Thu Nov 15 18:22:25 2007
New Revision: 48714
Modified:
pypy/branch/ropes-unicode/pypy/objspace/std/ropeobject.py
Log:
make the ropes of the std obj space work again
Modified: pypy/branch/ropes-unicode/pypy/objspace/std/ropeobject.py
==============================================================================
--- pypy/branch/ropes-unicode/pypy/objspace/std/ropeobject.py (original)
+++ pypy/branch/ropes-unicode/pypy/objspace/std/ropeobject.py Thu Nov 15 18:22:25 2007
@@ -24,7 +24,7 @@
return "%s(%r)" % (w_self.__class__.__name__, w_self._node)
def unwrap(w_self, space):
- return w_self._node.flatten()
+ return w_self._node.flatten_string()
def create_if_subclassed(w_self):
if type(w_self) is W_RopeObject:
@@ -49,7 +49,7 @@
def __init__(w_self, w_rope, index=0):
w_self.node = node = w_rope._node
- w_self.char_iter = rope.CharIterator(node)
+ w_self.item_iter = rope.ItemIterator(node)
w_self.index = index
registerimplementation(W_RopeIterObject)
@@ -58,9 +58,9 @@
l = w_self._node.length()
if l == 0:
return space.w_False
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for i in range(l):
- if not fun(iter.next()):
+ if not fun(iter.nextchar()):
return space.w_False
return space.w_True
_is_generic._annspecialcase_ = "specialize:arg(2)"
@@ -104,9 +104,9 @@
if l == 0:
return space.w_False
cased = False
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for idx in range(l):
- c = iter.next()
+ c = iter.nextchar()
if c.islower():
return space.w_False
elif not cased and c.isupper():
@@ -121,9 +121,9 @@
if l == 0:
return space.w_False
cased = False
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for idx in range(l):
- c = iter.next()
+ c = iter.nextchar()
if c.isupper():
return space.w_False
elif not cased and c.islower():
@@ -138,9 +138,9 @@
cased = False
previous_is_cased = False
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for pos in range(0, w_self._node.length()):
- ch = iter.next()
+ ch = iter.nextchar()
if ch.isupper():
if previous_is_cased:
return space.w_False
@@ -158,9 +158,9 @@
def str_upper__Rope(space, w_self):
l = w_self._node.length()
res = [' '] * l
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for i in range(l):
- ch = iter.next()
+ ch = iter.nextchar()
res[i] = _upper(ch)
return W_RopeObject(rope.rope_from_charlist(res))
@@ -168,9 +168,9 @@
def str_lower__Rope(space, w_self):
l = w_self._node.length()
res = [' '] * l
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for i in range(l):
- ch = iter.next()
+ ch = iter.nextchar()
res[i] = _lower(ch)
return W_RopeObject(rope.rope_from_charlist(res))
@@ -178,9 +178,9 @@
def str_swapcase__Rope(space, w_self):
l = w_self._node.length()
res = [' '] * l
- iter = rope.CharIterator(w_self._node)
+ iter = rope.ItemIterator(w_self._node)
for i in range(l):
- ch = iter.next()
+ ch = iter.nextchar()
if ch.isupper():
o = ord(ch) + 32
res[i] = chr(o)
@@ -198,8 +198,8 @@
length = node.length()
buffer = [' '] * length
if length > 0:
- iter = rope.CharIterator(node)
- ch = iter.next()
+ iter = rope.ItemIterator(node)
+ ch = iter.nextchar()
if ch.islower():
o = ord(ch) - 32
buffer[0] = chr(o)
@@ -207,7 +207,7 @@
buffer[0] = ch
for i in range(1, length):
- ch = iter.next()
+ ch = iter.nextchar()
if ch.isupper():
o = ord(ch) + 32
buffer[i] = chr(o)
@@ -224,9 +224,9 @@
buffer = [' '] * length
prev_letter = ' '
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
for pos in range(0, length):
- ch = iter.next()
+ ch = iter.nextchar()
if not prev_letter.isalpha():
buffer[pos] = _upper(ch)
else:
@@ -242,11 +242,11 @@
node = w_self._node
length = node.length()
i = 0
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
while True:
# find the beginning of the next word
while i < length:
- if not iter.next().isspace():
+ if not iter.nextchar().isspace():
break # found
i += 1
else:
@@ -257,7 +257,7 @@
j = length # take all the rest of the string
else:
j = i + 1
- while j < length and not iter.next().isspace():
+ while j < length and not iter.nextchar().isspace():
j += 1
maxsplit -= 1 # NB. if it's already < 0, it stays < 0
@@ -298,7 +298,7 @@
# XXX works but flattens
maxsplit = space.int_w(w_maxsplit)
res_w = []
- value = w_self._node.flatten()
+ value = w_self._node.flatten_string()
i = len(value)-1
while True:
# starting from the end, find the end of the next word
@@ -334,9 +334,9 @@
# XXX works but flattens
maxsplit = space.int_w(w_maxsplit)
res_w = []
- value = w_self._node.flatten()
+ value = w_self._node.flatten_string()
end = len(value)
- by = w_by._node.flatten()
+ by = w_by._node.flatten_string()
bylen = len(by)
if bylen == 0:
raise OperationError(space.w_ValueError, space.wrap("empty separator"))
@@ -446,8 +446,8 @@
def str_rfind__Rope_Rope_ANY_ANY(space, w_self, w_sub, w_start, w_end):
# XXX works but flattens
(self, sub, start, end) = _convert_idx_params(space, w_self, w_sub, w_start, w_end)
- self = self.flatten()
- sub = sub.flatten()
+ self = self.flatten_string()
+ sub = sub.flatten_string()
res = self.rfind(sub, start, end)
return wrapint(space, res)
@@ -475,8 +475,8 @@
if not sub.length():
raise OperationError(space.w_ValueError,
space.wrap("empty separator"))
- flattened_self = self.flatten()
- flattened_sub = sub.flatten()
+ flattened_self = self.flatten_string()
+ flattened_sub = sub.flatten_string()
pos = flattened_self.rfind(flattened_sub)
if pos == -1:
return space.newtuple([W_RopeObject.EMPTY, W_RopeObject.EMPTY, w_self])
@@ -501,8 +501,8 @@
def str_rindex__Rope_Rope_ANY_ANY(space, w_self, w_sub, w_start, w_end):
(self, sub, start, end) = _convert_idx_params(space, w_self, w_sub, w_start, w_end)
# XXX works but flattens
- self = self.flatten()
- sub = sub.flatten()
+ self = self.flatten_string()
+ sub = sub.flatten_string()
res = self.rfind(sub, start, end)
if res < 0:
raise OperationError(space.w_ValueError,
@@ -527,9 +527,9 @@
upper = maxsplit - 1
assert upper >= 0
substrings = [by]
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
for i in range(upper):
- substrings.append(rope.LiteralStringNode.PREBUILT[ord(iter.next())])
+ substrings.append(rope.LiteralStringNode.PREBUILT[ord(iter.nextchar())])
substrings.append(by)
substrings.append(rope.getslice_one(node, upper, length))
try:
@@ -570,13 +570,13 @@
if left:
#print "while %d < %d and -%s- in -%s-:"%(lpos, rpos, u_self[lpos],w_chars)
- iter = rope.CharIterator(node)
- while lpos < rpos and iter.next() in u_chars:
+ iter = rope.ItemIterator(node)
+ while lpos < rpos and iter.nextchar() in u_chars:
lpos += 1
if right:
- iter = rope.ReverseCharIterator(node)
- while rpos > lpos and iter.next() in u_chars:
+ iter = rope.ReverseItemIterator(node)
+ while rpos > lpos and iter.nextchar() in u_chars:
rpos -= 1
return W_RopeObject(rope.getslice_one(node, lpos, rpos))
@@ -591,13 +591,13 @@
if left:
#print "while %d < %d and -%s- in -%s-:"%(lpos, rpos, u_self[lpos],w_chars)
- iter = rope.CharIterator(node)
- while lpos < rpos and iter.next().isspace():
+ iter = rope.ItemIterator(node)
+ while lpos < rpos and iter.nextchar().isspace():
lpos += 1
if right:
- iter = rope.ReverseCharIterator(node)
- while rpos > lpos and iter.next().isspace():
+ iter = rope.ReverseItemIterator(node)
+ while rpos > lpos and iter.nextchar().isspace():
rpos -= 1
assert rpos >= lpos # annotator hint, don't remove
@@ -671,11 +671,11 @@
begin = end - suffix.length()
if begin < start:
return False
- iter1 = rope.SeekableCharIterator(self)
+ iter1 = rope.SeekableItemIterator(self)
iter1.seekforward(begin)
- iter2 = rope.CharIterator(suffix)
+ iter2 = rope.ItemIterator(suffix)
for i in range(suffix.length()):
- if iter1.next() != iter2.next():
+ if iter1.nextchar() != iter2.nextchar():
return False
return True
@@ -702,11 +702,11 @@
stop = start + prefix.length()
if stop > end:
return False
- iter1 = rope.SeekableCharIterator(self)
+ iter1 = rope.SeekableItemIterator(self)
iter1.seekforward(start)
- iter2 = rope.CharIterator(prefix)
+ iter2 = rope.ItemIterator(prefix)
for i in range(prefix.length()):
- if iter1.next() != iter2.next():
+ if iter1.nextchar() != iter2.nextchar():
return False
return True
@@ -732,13 +732,13 @@
distance = tabsize
if length:
distance = 0
- iter = rope.ReverseCharIterator(node)
+ iter = rope.ReverseItemIterator(node)
while 1:
# no sophisticated linebreak support now
# '\r' just for passing adapted CPython test
try:
- char = iter.next()
+ char = iter.nextchar()
except StopIteration:
break
if char == "\n" or char == "\r":
@@ -800,17 +800,17 @@
return space.newlist([])
strs_w = []
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
i = j = 0
last = " "
- char = iter.next()
+ char = iter.nextchar()
while i < length:
# Find a line and append it
while char != '\n' and char != '\r':
try:
i += 1
last = char
- char = iter.next()
+ char = iter.nextchar()
except StopIteration:
break
# Skip the line break reading CRLF as one line break
@@ -818,7 +818,7 @@
i += 1
last = char
try:
- char = iter.next()
+ char = iter.nextchar()
except StopIteration:
pass
else:
@@ -826,7 +826,7 @@
i += 1
try:
last = char
- char = iter.next()
+ char = iter.nextchar()
except StopIteration:
pass
if keepends:
@@ -853,7 +853,7 @@
return W_RopeObject(rope.multiply(zero, width))
middle = width - length
- firstchar = node.getitem(0)
+ firstchar = node.getchar(0)
if length > 0 and (firstchar == '+' or firstchar == '-'):
return W_RopeObject(rope.rebalance(
[rope.LiteralStringNode.PREBUILT[ord(firstchar)],
@@ -865,7 +865,7 @@
rope.multiply(zero, middle), node))
def str_w__Rope(space, w_str):
- return w_str._node.flatten()
+ return w_str._node.flatten_string()
def hash__Rope(space, w_str):
return wrapint(space, rope.hash_rope(w_str._node))
@@ -910,7 +910,7 @@
exc = space.call_function(space.w_IndexError,
space.wrap("string index out of range"))
raise OperationError(space.w_IndexError, exc)
- return wrapchar(space, node.getitem(ival))
+ return wrapchar(space, node.getchar(ival))
def getitem__Rope_Slice(space, w_str, w_slice):
node = w_str._node
@@ -976,7 +976,7 @@
space.w_TypeError,
space.wrap("ord() expected a character, but string "
"of length %d found"% (w_str._node.length(),)))
- return space.wrap(ord(node.flatten()[0]))
+ return space.wrap(ord(node.flatten_string()[0]))
def getnewargs__Rope(space, w_str):
return space.newtuple([W_RopeObject(w_str._node)])
@@ -989,15 +989,16 @@
buf = [' '] * (length * 4 + 2) # safely overallocate
quote = "'"
- if rope.find_char(node, quote) != -1 and rope.find_char(node, '"') == -1:
+ if (rope.find_int(node, ord(quote)) != -1 and
+ rope.find_int(node, ord('"')) == -1):
quote = '"'
buf[0] = quote
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
while 1:
try:
- c = iter.next()
+ c = iter.nextchar()
i += 1
except StopIteration:
break
@@ -1047,10 +1048,10 @@
node = w_string._node
chars = []
- iter = rope.CharIterator(node)
+ iter = rope.ItemIterator(node)
while 1:
try:
- c = iter.next()
+ c = iter.nextchar()
w_char = W_RopeObject.PREBUILT[ord(c)]
if not space.is_true(space.contains(w_deletechars, w_char)):
chars.append(table[ord(c)])
@@ -1082,7 +1083,7 @@
if w_ropeiter.node is None:
raise OperationError(space.w_StopIteration, space.w_None)
try:
- char = w_ropeiter.char_iter.next()
+ char = w_ropeiter.item_iter.nextchar()
w_item = space.wrap(char)
except StopIteration:
w_ropeiter.node = None
More information about the Pypy-commit
mailing list