def unicode_translate__RopeUnicode_ANY(space, w_self, w_table): self = w_self._node w_sys = space.getbuiltinmodule('sys') maxunicode = space.int_w(space.getattr(w_sys, space.wrap("maxunicode"))) result = [] iter = rope.ItemIterator(self) for i in range(self.length()): crope = iter.nextrope() char = crope.getint(0) try: w_newval = space.getitem(w_table, space.wrap(char)) except OperationError, e: if e.match(space, space.w_LookupError): result.append(crope) else: raise else: if space.is_w(w_newval, space.w_None): continue elif space.isinstance_w(w_newval, space.w_int): newval = space.int_w(w_newval) if newval < 0 or newval > maxunicode: raise OperationError( space.w_TypeError, space.wrap("character mapping must be in range(0x%x)" % (maxunicode + 1,))) result.append(rope.rope_from_unichar(unichr(newval))) elif space.isinstance_w(w_newval, space.w_unicode): result.append(ropeunicode_w(space, w_newval)) else: raise OperationError( space.w_TypeError, space.wrap("character mapping must return integer, None or unicode"))
def unicode_translate__RopeUnicode_ANY(space, w_self, w_table): self = w_self._node w_sys = space.getbuiltinmodule('sys') maxunicode = space.int_w(space.getattr(w_sys, space.wrap("maxunicode"))) result = [] iter = rope.ItemIterator(self) for i in range(self.length()): crope = iter.nextrope() char = crope.getint(0) try: w_newval = space.getitem(w_table, space.wrap(char)) except OperationError, e: if e.match(space, space.w_LookupError): result.append(crope) else: raise else: if space.is_w(w_newval, space.w_None): continue elif space.isinstance_w(w_newval, space.w_int): newval = space.int_w(w_newval) if newval < 0 or newval > maxunicode: raise OperationError( space.w_TypeError, space.wrap("character mapping must be in range(0x%x)" % (maxunicode + 1, ))) result.append(rope.rope_from_unichar(unichr(newval))) elif space.isinstance_w(w_newval, space.w_unicode): result.append(ropeunicode_w(space, w_newval)) else: raise OperationError( space.w_TypeError, space.wrap( "character mapping must return integer, None or unicode" ))