def Py_UNICODE_TODECIMAL(space, ch): """Return the character ch converted to a decimal positive integer. Return -1 if this is not possible. This macro does not raise exceptions.""" try: return unicodedb.decimal(ord(ch)) except KeyError: return -1
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_UnicodeObject): raise operationerrfmt(space.w_TypeError, "expected unicode, got '%s'", space.type(w_unistr).getname(space)) unistr = w_unistr._value result = ['\0'] * len(unistr) digits = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] for i in xrange(len(unistr)): uchr = ord(unistr[i]) if unicodedb.isspace(uchr): result[i] = ' ' continue try: result[i] = digits[unicodedb.decimal(uchr)] except KeyError: if 0 < uchr < 256: result[i] = chr(uchr) else: w_encoding = space.wrap('decimal') w_start = space.wrap(i) w_end = space.wrap(i+1) w_reason = space.wrap('invalid decimal Unicode string') raise OperationError(space.w_UnicodeEncodeError, space.newtuple([w_encoding, w_unistr, w_start, w_end, w_reason])) return ''.join(result)
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_RopeUnicodeObject): raise OperationError(space.w_TypeError, space.wrap("expected unicode")) unistr = w_unistr._node length = unistr.length() result = ['\0'] * length digits = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] iter = rope.ItemIterator(unistr) for i in range(length): uchr = iter.nextint() if unicodedb.isspace(uchr): result[i] = ' ' continue try: result[i] = digits[unicodedb.decimal(uchr)] except KeyError: if 0 < uchr < 256: result[i] = chr(uchr) else: w_encoding = space.wrap('decimal') w_start = space.wrap(i) w_end = space.wrap(i+1) w_reason = space.wrap('invalid decimal Unicode string') raise OperationError(space.w_UnicodeEncodeError, space.newtuple([w_encoding, w_unistr, w_start, w_end, w_reason])) return ''.join(result)
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_RopeUnicodeObject): raise OperationError(space.w_TypeError, space.wrap("expected unicode")) unistr = w_unistr._node length = unistr.length() result = ['\0'] * length digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] iter = rope.ItemIterator(unistr) for i in range(length): uchr = iter.nextint() if unicodedb.isspace(uchr): result[i] = ' ' continue try: result[i] = digits[unicodedb.decimal(uchr)] except KeyError: if 0 < uchr < 256: result[i] = chr(uchr) else: w_encoding = space.wrap('decimal') w_start = space.wrap(i) w_end = space.wrap(i + 1) w_reason = space.wrap('invalid decimal Unicode string') raise OperationError( space.w_UnicodeEncodeError, space.newtuple( [w_encoding, w_unistr, w_start, w_end, w_reason])) return ''.join(result)
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_UnicodeObject): raise oefmt(space.w_TypeError, "anticipó unicod, recibió '%T'", w_unistr) unistr = w_unistr._value result = ['\0'] * len(unistr) digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] for i in xrange(len(unistr)): uchr = ord(unistr[i]) if unicodedb.isspace(uchr): result[i] = ' ' continue try: result[i] = digits[unicodedb.decimal(uchr)] except KeyError: if 0 < uchr < 256: result[i] = chr(uchr) else: w_encoding = space.newtext('decimal') w_start = space.newint(i) w_end = space.newint(i + 1) w_reason = space.newtext('palabra decimal unicod no válida') raise OperationError( space.w_UnicodeEncodeError, space.newtuple( [w_encoding, w_unistr, w_start, w_end, w_reason])) return ''.join(result)
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_UnicodeObject): raise oefmt(space.w_TypeError, "expected unicode, got '%T'", w_unistr) unistr = w_unistr._value result = ["\0"] * len(unistr) digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] for i in xrange(len(unistr)): uchr = ord(unistr[i]) if unicodedb.isspace(uchr): result[i] = " " continue try: result[i] = digits[unicodedb.decimal(uchr)] except KeyError: if 0 < uchr < 256: result[i] = chr(uchr) else: w_encoding = space.wrap("decimal") w_start = space.wrap(i) w_end = space.wrap(i + 1) w_reason = space.wrap("invalid decimal Unicode string") raise OperationError( space.w_UnicodeEncodeError, space.newtuple([w_encoding, w_unistr, w_start, w_end, w_reason]) ) return "".join(result)
def _rpy_unicode_to_decimal_w(space, unistr): result = [u'\0'] * len(unistr) for i in xrange(len(unistr)): uchr = ord(unistr[i]) if uchr > 127: if unicodedb.isspace(uchr): result[i] = ' ' continue try: uchr = ord(u'0') + unicodedb.decimal(uchr) except KeyError: pass result[i] = unichr(uchr) return u''.join(result)
def unicode_to_decimal_w(space, w_unistr): if not isinstance(w_unistr, W_UnicodeObject): raise oefmt(space.w_TypeError, "expected unicode, got '%T'", w_unistr) unistr = w_unistr._value result = [u'\0'] * len(unistr) for i in xrange(len(unistr)): uchr = ord(unistr[i]) if uchr > 127: if unicodedb.isspace(uchr): result[i] = ' ' continue try: uchr = ord(u'0') + unicodedb.decimal(uchr) except KeyError: pass result[i] = unichr(uchr) return unicodehelper.encode_utf8(space, u''.join(result))