()
| 52 | return m, gbuni |
| 53 | |
| 54 | def main(): |
| 55 | print("Loading Mapping File...") |
| 56 | gb2312map = open_mapping_file('python-mappings/GB2312.TXT', MAPPINGS_GB2312) |
| 57 | cp936map = open_mapping_file('python-mappings/CP936.TXT', MAPPINGS_CP936) |
| 58 | gb18030map = open_mapping_file('python-mappings/gb-18030-2000.xml', MAPPINGS_GB18030) |
| 59 | |
| 60 | gb18030decmap, gb18030unilinear = parse_gb18030map(gb18030map) |
| 61 | gbkdecmap = loadmap(cp936map) |
| 62 | gb2312decmap = loadmap(gb2312map) |
| 63 | difmap = {} |
| 64 | for c1, m in gbkdecmap.items(): |
| 65 | for c2, code in m.items(): |
| 66 | del gb18030decmap[c1][c2] |
| 67 | if not gb18030decmap[c1]: |
| 68 | del gb18030decmap[c1] |
| 69 | for c1, m in gb2312decmap.items(): |
| 70 | for c2, code in m.items(): |
| 71 | gbkc1, gbkc2 = c1 | 0x80, c2 | 0x80 |
| 72 | if gbkdecmap[gbkc1][gbkc2] == code: |
| 73 | del gbkdecmap[gbkc1][gbkc2] |
| 74 | if not gbkdecmap[gbkc1]: |
| 75 | del gbkdecmap[gbkc1] |
| 76 | |
| 77 | gb2312_gbkencmap, gb18030encmap = {}, {} |
| 78 | for c1, m in gbkdecmap.items(): |
| 79 | for c2, code in m.items(): |
| 80 | gb2312_gbkencmap.setdefault(code >> 8, {}) |
| 81 | gb2312_gbkencmap[code >> 8][code & 0xff] = c1 << 8 | c2 # MSB set |
| 82 | for c1, m in gb2312decmap.items(): |
| 83 | for c2, code in m.items(): |
| 84 | gb2312_gbkencmap.setdefault(code >> 8, {}) |
| 85 | gb2312_gbkencmap[code >> 8][code & 0xff] = c1 << 8 | c2 # MSB unset |
| 86 | for c1, m in gb18030decmap.items(): |
| 87 | for c2, code in m.items(): |
| 88 | gb18030encmap.setdefault(code >> 8, {}) |
| 89 | gb18030encmap[code >> 8][code & 0xff] = c1 << 8 | c2 |
| 90 | |
| 91 | with open('mappings_cn.h', 'w') as fp: |
| 92 | print_autogen(fp, os.path.basename(__file__)) |
| 93 | |
| 94 | print("Generating GB2312 decode map...") |
| 95 | writer = DecodeMapWriter(fp, "gb2312", gb2312decmap) |
| 96 | writer.update_decode_map(GB2312_C1, GB2312_C2) |
| 97 | writer.generate() |
| 98 | |
| 99 | print("Generating GBK decode map...") |
| 100 | writer = DecodeMapWriter(fp, "gbkext", gbkdecmap) |
| 101 | writer.update_decode_map(GBKL1_C1, GBKL1_C2) |
| 102 | writer.update_decode_map(GBKL2_C1, GBKL2_C2) |
| 103 | writer.generate() |
| 104 | |
| 105 | print("Generating GB2312 && GBK encode map...") |
| 106 | writer = EncodeMapWriter(fp, "gbcommon", gb2312_gbkencmap) |
| 107 | writer.generate() |
| 108 | |
| 109 | print("Generating GB18030 extension decode map...") |
| 110 | writer = DecodeMapWriter(fp, "gb18030ext", gb18030decmap) |
| 111 | for i in range(1, 6): |
no test coverage detected
searching dependent graphs…