diff options
author | Alexander Belopolsky <alexander.belopolsky@gmail.com> | 2010-11-30 16:56:15 (GMT) |
---|---|---|
committer | Alexander Belopolsky <alexander.belopolsky@gmail.com> | 2010-11-30 16:56:15 (GMT) |
commit | 827fdaae30e4ee10d86a7679d7fa1c8863235ba1 (patch) | |
tree | 30ac475d85c603e81ded978f7eb29b7630f6f26f /Tools/unicode/gencodec.py | |
parent | f498b754ed63c69b42240a46c0d9c9c01936360d (diff) | |
download | cpython-827fdaae30e4ee10d86a7679d7fa1c8863235ba1.zip cpython-827fdaae30e4ee10d86a7679d7fa1c8863235ba1.tar.gz cpython-827fdaae30e4ee10d86a7679d7fa1c8863235ba1.tar.bz2 |
Issue #10552: Partially fixed a sort error in Tools/unicode/gencodec.py
Diffstat (limited to 'Tools/unicode/gencodec.py')
-rw-r--r-- | Tools/unicode/gencodec.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Tools/unicode/gencodec.py b/Tools/unicode/gencodec.py index 65fe5e5..7e7d6d0 100644 --- a/Tools/unicode/gencodec.py +++ b/Tools/unicode/gencodec.py @@ -34,6 +34,9 @@ MAX_TABLE_SIZE = 8192 # Standard undefined Unicode code point UNI_UNDEFINED = chr(0xFFFE) +# Placeholder for a missing codepoint +MISSING_CODE = -1 + mapRE = re.compile('((?:0x[0-9a-fA-F]+\+?)+)' '\s+' '((?:(?:0x[0-9a-fA-Z]+|<[A-Za-z]+>)\+?)*)' @@ -52,7 +55,7 @@ def parsecodes(codes, len=len, range=range): """ if not codes: - return None + return MISSING_CODE l = codes.split('+') if len(l) == 1: return int(l[0],16) @@ -60,8 +63,8 @@ def parsecodes(codes, len=len, range=range): try: l[i] = int(l[i],16) except ValueError: - l[i] = None - l = [x for x in l if x is not None] + l[i] = MISSING_CODE + l = [x for x in l if x != MISSING_CODE] if len(l) == 1: return l[0] else: @@ -113,7 +116,7 @@ def readmap(filename): # mappings to None for the rest if len(identity) >= len(unmapped): for enc in unmapped: - enc2uni[enc] = (None, "") + enc2uni[enc] = (MISSING_CODE, "") enc2uni['IDENTITY'] = 256 return enc2uni @@ -211,7 +214,7 @@ def python_tabledef_code(varname, map, comments=1, key_precision=2): (mapkey, mapcomment) = mapkey if isinstance(mapvalue, tuple): (mapvalue, mapcomment) = mapvalue - if mapkey is None: + if mapkey == MISSING_CODE: continue table[mapkey] = (mapvalue, mapcomment) if mapkey > maxkey: @@ -223,11 +226,11 @@ def python_tabledef_code(varname, map, comments=1, key_precision=2): # Create table code for key in range(maxkey + 1): if key not in table: - mapvalue = None + mapvalue = MISSING_CODE mapcomment = 'UNDEFINED' else: mapvalue, mapcomment = table[key] - if mapvalue is None: + if mapvalue == MISSING_CODE: mapchar = UNI_UNDEFINED else: if isinstance(mapvalue, tuple): |