From 880b6876320b98e7d9a17aa3029c1ae35c9d0809 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Wed, 2 Nov 2011 14:49:24 +0800 Subject: [PATCH] fixes gen special table --- scripts/genspecialtable.py | 7 ++++--- scripts/pinyintable.py | 22 ++++++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/scripts/genspecialtable.py b/scripts/genspecialtable.py index b16319d..9ea45f2 100644 --- a/scripts/genspecialtable.py +++ b/scripts/genspecialtable.py @@ -22,7 +22,7 @@ import operator import pinyin -from pinyintable import get_chewing +from pinyintable import get_chewing, get_shengmu_chewing from specialtable import * pinyin_list = sorted(pinyin.PINYIN_LIST) @@ -40,10 +40,11 @@ def sort_all(): def get_chewing_string(pinyin): if pinyin not in pinyin_list: if pinyin in shengmu_list: - return "Error" + (initial, middle, final) = get_shengmu_chewing(pinyin) else: assert False, "Un-expected pinyin string." - (initial, middle, final) = get_chewing(pinyin) + else: + (initial, middle, final) = get_chewing(pinyin) chewing_str = 'ChewingKey({0}, {1}, {2})'.format(initial, middle, final) return chewing_str diff --git a/scripts/pinyintable.py b/scripts/pinyintable.py index 3457aba..979f9b7 100644 --- a/scripts/pinyintable.py +++ b/scripts/pinyintable.py @@ -110,21 +110,27 @@ def gen_pinyins(): flags, get_chewing(pinyin_key) +def get_shengmu_chewing(shengmu): + assert shengmu in shengmu_list, "Expected shengmu here." + chewing_key = 'CHEWING_{0}'.format(shengmu.upper()) + if chewing_key in chewing.ASCII_CHEWING_INITIAL_MAP: + initial = chewing_key + else: + initial = 'PINYIN_{0}'.format(shengmu.upper()) + return initial, "CHEWING_ZREO_MIDDLE", "CHEWING_ZERO_FINAL" + def gen_shengmu(): #generate all shengmu for shengmu in shengmu_list: if shengmu in pinyin_list: continue flags = ["IS_PINYIN", "PINYIN_INCOMPLETE"] - chewing_key = 'CHEWING_{0}'.format(shengmu.upper()) - if chewing_key in chewing.ASCII_CHEWING_INITIAL_MAP: - initial = chewing_key + chewing_key = get_shengmu_chewing(shengmu) + chewing_initial = chewing_key[0] + if chewing_initial in chewing.ASCII_CHEWING_INITIAL_MAP: chewing_key = chewing.ASCII_CHEWING_INITIAL_MAP[chewing_key] - else: - chewing_key = 'PINYIN_{0}'.format(shengmu.upper()) - initial = chewing_key - yield shengmu, shengmu, chewing_key, \ - flags, (initial, "CHEWING_ZREO_MIDDLE", "CHEWING_ZERO_FINAL") + yield shengmu, shengmu, chewing_initial, \ + flags, chewing_key def gen_corrects(): -- 2.7.4