diff options
-rw-r--r-- | scripts/chewing.py | 2 | ||||
-rw-r--r-- | scripts/correct.py (renamed from scripts/fuzzy.py) | 7 | ||||
-rw-r--r-- | scripts/genpytable.py | 25 | ||||
-rw-r--r-- | src/storage/chewing_key.h | 4 |
4 files changed, 27 insertions, 11 deletions
diff --git a/scripts/chewing.py b/scripts/chewing.py index 856cf4a..22d18de 100644 --- a/scripts/chewing.py +++ b/scripts/chewing.py @@ -60,7 +60,7 @@ ASCII_CHEWING_FINAL_MAP = { "CHEWING_AN" : "ㄢ", "CHEWING_ANG" : "ㄤ", "CHEWING_AO" : "ㄠ", - "CHEWING_E" : "ㄜ", + "CHEWING_E" : "ㄝ", # merge "ㄝ" and "ㄜ" "CHEWING_EI" : "ㄟ", "CHEWING_EN" : "ㄣ", "CHEWING_ENG" : "ㄥ", diff --git a/scripts/fuzzy.py b/scripts/correct.py index 8a94aa7..96b965c 100644 --- a/scripts/fuzzy.py +++ b/scripts/correct.py @@ -65,6 +65,8 @@ auto_correct_ext = [ ("yun", "yven", "PINYIN_CORRECT_UEN_TO_UN | PINYIN_CORRECT_V_TO_U"), ] + +''' fuzzy_shengmu = [ ("c", "ch"), ("ch", "c"), @@ -89,8 +91,5 @@ fuzzy_yunmu = [ ("eng", "en"), ("in", "ing"), ("ing", "in"), - ("ian", "iang"), - ("iang", "ian"), - ("uan", "uang"), - ("uang", "uan"), ] +''' diff --git a/scripts/genpytable.py b/scripts/genpytable.py index b285d76..ed2686f 100644 --- a/scripts/genpytable.py +++ b/scripts/genpytable.py @@ -23,7 +23,7 @@ import pinyin import bopomofo import chewing -from fuzzy import * +from correct import * def check_pinyin_chewing_map(): @@ -34,12 +34,24 @@ def check_pinyin_chewing_map(): print("pinyin %s has no chewing mapping", pinyin_key) def get_chewing(pinyin_key): - initial = 'CHEWING_ZERO_INITIAL' - middle = 'CHEWING_ZERO_MIDDLE' - final = 'CHEWING_ZERO_FINAL' + initial, middle, final = \ + 'CHEWING_ZERO_INITIAL', 'CHEWING_ZERO_MIDDLE', 'CHEWING_ZERO_FINAL' assert pinyin_key != None assert pinyin_key in bopomofo.PINYIN_BOPOMOFO_MAP + + #handle 'w' and 'y' + if pinyin_key[0] == 'w': + initial = 'PINYIN_W' + if pinyin_key[0] == 'y': + initial = 'PINYIN_Y' + + #get chewing string bopomofo_str = bopomofo.PINYIN_BOPOMOFO_MAP[pinyin_key] + + #handle 'ci', 'chi', 'si', 'shi', 'zi', 'zhi', 'ri' + if pinyin_key in {'ci', 'chi', 'si', 'shi', 'zi', 'zhi', 'ri'}: + middle = "CHEWING_I" + #normal process for char in bopomofo_str: if char in chewing.CHEWING_ASCII_INITIAL_MAP: initial = chewing.CHEWING_ASCII_INITIAL_MAP[char] @@ -47,6 +59,11 @@ def get_chewing(pinyin_key): middle = chewing.CHEWING_ASCII_MIDDLE_MAP[char] if char in chewing.CHEWING_ASCII_FINAL_MAP: final = chewing.CHEWING_ASCII_FINAL_MAP[char] + if char == "ㄜ": + final = "CHEWING_E" + + if middle == "CHEWING_U" and final == "CHEWING_ENG": + middle, final = "CHEWING_ZERO_MIDDLE", "PINYIN_ONG" return initial, middle, final diff --git a/src/storage/chewing_key.h b/src/storage/chewing_key.h index 2cc8f53..3e5c4b9 100644 --- a/src/storage/chewing_key.h +++ b/src/storage/chewing_key.h @@ -86,7 +86,7 @@ enum ChewingFinal CHEWING_AN = 3, /* "ㄢ". */ CHEWING_ANG = 4, /* "ㄤ". */ CHEWING_AO = 5, /* "ㄠ". */ - CHEWING_E = 6, /* "ㄜ". */ + CHEWING_E = 6, /* "ㄝ" and "ㄜ". */ INVALID_EA = 7, /* Invalid Pinyin/Chewing. */ CHEWING_EI = 8, /* "ㄟ". */ CHEWING_EN = 9, /* "ㄣ". */ @@ -94,7 +94,7 @@ enum ChewingFinal CHEWING_ER = 11, /* "ㄦ". */ CHEWING_NG = 12, /* "ㄫ". */ CHEWING_O = 13, /* "ㄛ". */ - PINYIN_ONG = 14, /* "eng". */ + PINYIN_ONG = 14, /* "ueng". */ CHEWING_OU = 15, /* "ㄡ". */ CHEWING_LAST_FINAL = CHEWING_OU, CHEWING_NUMBER_OF_FINALS = CHEWING_LAST_FINAL + 1 |