fixes chewing index
authorPeng Wu <alexepico@gmail.com>
Thu, 5 Jan 2012 03:17:49 +0000 (11:17 +0800)
committerPeng Wu <alexepico@gmail.com>
Thu, 5 Jan 2012 03:20:20 +0000 (11:20 +0800)
scripts/bopomofo.py
scripts/genpinyintable.py
scripts/pinyintable.py

index 09a7b88..fe11b1a 100644 (file)
@@ -457,6 +457,9 @@ BOPOMOFO_PINYIN_MAP = {
 
 PINYIN_BOPOMOFO_MAP = dict([(v, k) for k, v in BOPOMOFO_PINYIN_MAP.items()])
 
+SPECIAL_INITIAL_SET = {'ci', 'chi', 'si', 'shi', 'zi', 'zhi', 'ri'}
+
+'''
 SHENG_YUN_BOPOMOFO_MAP = {
     "b" : "ㄅ",
     "p" : "ㄆ",
@@ -524,3 +527,4 @@ SHENG_YUN_BOPOMOFO_MAP = {
     "ong" :  ("ㄨㄥ", ("jqxy", "ㄩㄥ")),  # y後面為ㄩㄥ
     "iong" : "ㄩㄥ",
 }
+'''
index c0f91c6..05c0419 100644 (file)
@@ -20,6 +20,7 @@
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 import operator
+import bopomofo
 from pinyintable import *
 from chewingkey import gen_table_index
 
@@ -38,7 +39,7 @@ def filter_pinyin_list():
         if "IS_PINYIN" in flags:
             pinyin_index.append((wrong, flags, correct))
         if "IS_CHEWING" in flags:
-            bopomofo_index.append((bopomofo, flags, bopomofo))
+            bopomofo_index.append((bopomofo, flags))
 
 
 def sort_all():
@@ -77,8 +78,9 @@ def gen_pinyin_index():
 
 def gen_bopomofo_index():
     entries = []
-    for (bopomofo_str, flags, bopomofo) in bopomofo_index:
-        index = [x[1] for x in content_table].index(bopomofo)
+    for (bopomofo_str, flags) in bopomofo_index:
+        pinyin_str = bopomofo.BOPOMOFO_PINYIN_MAP[bopomofo_str]
+        index = [x[0] for x in content_table].index(pinyin_str)
         entry = '{{"{0}", {1}, {2}}}'.format(bopomofo_str, flags, index)
         entries.append(entry)
     return ',\n'.join(entries)
index a1d8d3e..33b5e9c 100644 (file)
@@ -53,8 +53,8 @@ def get_chewing(pinyin_key):
     #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'}:
+    #handle bopomofo SPECIAL_INITIAL_SET
+    if pinyin_key in bopomofo.SPECIAL_INITIAL_SET:
         middle = "CHEWING_I"
     #normal process
     for char in bopomofo_str:
@@ -105,7 +105,8 @@ def gen_pinyins():
         if pinyin_key in shengmu_list:
             flags.append("PINYIN_INCOMPLETE")
         chewing_key = bopomofo.PINYIN_BOPOMOFO_MAP[pinyin_key]
-        if chewing_key in chewing.CHEWING_ASCII_INITIAL_MAP:
+        if chewing_key in chewing.CHEWING_ASCII_INITIAL_MAP and \
+                pinyin_key not in bopomofo.SPECIAL_INITIAL_SET:
             flags.append("CHEWING_INCOMPLETE")
         yield pinyin_key, pinyin_key, chewing_key, \
             flags, get_chewing(pinyin_key)