1
UNICODE_LAST_CHAR_PART1 = 0x2FAFF
3
HANGUL_S_COUNT = 19 * 21 * 28
6
print """// Generated by gen-unicode-tables.py
17
decomp_expansion_index = {}
19
for u in xrange(0, UNICODE_LAST_CHAR_PART1):
20
if (u >= HANGUL_S_BASE and u < HANGUL_S_BASE + HANGUL_S_COUNT):
22
norm = tuple(map(ord, unicodedata.normalize("NFKD", unichr(u))))
25
i = decomp_expansion_index[norm]
26
decomp_table.append((u, len(norm), i))
28
decomp_table.append((u, len(norm), max_index))
29
decomp_expansion_index[norm] = max_index
30
decomp_expansion.append((norm, max_index))
31
max_index += len(norm)
32
print "#define DECOMP_TABLE_LENGTH %d\n" % len(decomp_table)
33
print "static const decomposition decomp_table[] = {\n%s\n};\n" % ", \n".join(
34
" { 0x%x, %d, %d }" % (character, length, offset)
35
for character, length, offset in decomp_table)
36
print "static const Unicode decomp_expansion[] = {\n%s\n};\n" % ", \n".join(
37
" %s /* offset %d */ " % (", ".join("0x%x" % u for u in norm),
38
index) for norm, index in decomp_expansion)