Use lve, nve to replace lue, nue
authorPeng Huang <shawn.p.huang@gmail.com>
Mon, 18 Jan 2010 06:50:21 +0000 (14:50 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Mon, 18 Jan 2010 06:50:21 +0000 (14:50 +0800)
scripts/genpytable.py
scripts/pydict.py
src/Config.cc
src/PinyinParserTable.h
src/Types.h

index bb60cc5..8abb2e1 100644 (file)
@@ -21,7 +21,8 @@ auto_correct = [
     ("iu", "iou"),
     ("ui", "uei"),
     ("un", "uen"),
-    ("ue", "ve")]
+    ("ue", "ve"),
+    ("ve", "ue")]
 
 fuzzy_shengmu = [
     ("c", "ch"),
@@ -104,7 +105,7 @@ def get_pinyin():
         yield p, s, y, len(p), []
 
     for s in shengmu_list:
-        yield s, s, "", len(s), ["PINYIN_SIMPLE_PINYIN"]
+        yield s, s, "", len(s), ["PINYIN_INCOMPLETE_PINYIN"]
 
     for c, w in auto_correct:
         flag = "PINYIN_CORRECT_%s_TO_%s" % (w.upper(), c.upper())
index f864030..029d421 100644 (file)
@@ -61,9 +61,9 @@ PINYIN_DICT = {
     "li" : 171, "lia" : 172, "lian" : 173, "liang" : 174, "liao" : 175,
     "lie" : 176, "lin" : 177, "ling" : 178, "liu" : 179,
     "lo" : 180,
-    "long" : 181, "lou" : 182, "lu" : 183, "luan" : 184, "lue" : 185,
-    "lun" : 186, "luo" : 187, "lv" : 188,
-    # "lve" : 189,
+    "long" : 181, "lou" : 182, "lu" : 183, "luan" : 184,
+    # "lue" : 185,
+    "lun" : 186, "luo" : 187, "lv" : 188, "lve" : 189,
     "ma" : 190,
     "mai" : 191, "man" : 192, "mang" : 193, "mao" : 194, "me" : 195,
     "mei" : 196, "men" : 197, "meng" : 198, "mi" : 199, "mian" : 200,
@@ -74,8 +74,8 @@ PINYIN_DICT = {
     "niao" : 221, "nie" : 222, "nin" : 223, "ning" : 224, "niu" : 225,
     # "ng" : 226,
     "nong" : 227, "nou" : 228, "nu" : 229, "nuan" : 230,
-    "nue" : 231, "nuo" : 232, "nv" : 233,
-    # "nve" : 234,
+    # "nue" : 231,
+    "nuo" : 232, "nv" : 233, "nve" : 234,
     "o" : 235,
     "ou" : 236, "pa" : 237, "pai" : 238, "pan" : 239, "pang" : 240,
     "pao" : 241, "pei" : 242, "pen" : 243, "peng" : 244, "pi" : 245,
index 8d4b301..1995953 100644 (file)
@@ -55,6 +55,7 @@ static const struct {
     { StaticString ("CorrectPinyin_UEI_UI"),   PINYIN_CORRECT_UEI_TO_UI,   TRUE },
     { StaticString ("CorrectPinyin_UEN_UN"),   PINYIN_CORRECT_UEN_TO_UN,   TRUE },
     { StaticString ("CorrectPinyin_VE_UE"),    PINYIN_CORRECT_VE_TO_UE,    TRUE },
+    { StaticString ("CorrectPinyin_UE_UE"),    PINYIN_CORRECT_UE_TO_VE,    TRUE },
     /* fuzzy pinyin */
     { StaticString ("FuzzyPinyin_C_CH"),      PINYIN_FUZZY_C_CH,  FALSE },
     { StaticString ("FuzzyPinyin_CH_C"),      PINYIN_FUZZY_CH_C,  FALSE },
@@ -117,7 +118,7 @@ Config::readDefaultValues (void)
         m_option_mask &= ~PINYIN_FUZZY_ALL;
 
     /* read values */
-    for (guint i = 0;i < sizeof (options) / sizeof (options[0]); i++) {
+    for (guint i = 0; i < G_N_ELEMENTS (options); i++) {
         if (read (engine_pinyin, options[i].name, options[i].defval))
             m_option |= options[i].option;
         else
@@ -215,7 +216,7 @@ Config::valueChangedCallback (IBusConfig    *config,
             m_option_mask &= ~PINYIN_FUZZY_ALL;
     }
     else {
-        for (guint i = 0;i < sizeof (options) / sizeof (options[0]); i++) {
+        for (guint i = 0; i < G_N_ELEMENTS (options); i++) {
             if (G_LIKELY (options[i].name != name))
                 continue;
             if (normalizeGValue (value, options[i].defval))
index ece5a47..95fd9a8 100644 (file)
@@ -3980,15 +3980,15 @@ static const Pinyin pinyin_table[] = {
     {  /* 306 */
         text        : "lue",
         sheng       : "l",
-        yun         : "ue",
+        yun         : "ve",
         sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UE,
+        yun_id      : PINYIN_ID_VE,
         fsheng_id   : PINYIN_ID_N,
         fyun_id     : PINYIN_ID_ZERO,
         fsheng_id_2 : PINYIN_ID_R,
         fyun_id_2   : PINYIN_ID_ZERO,
         len         : 3,
-        flags       : 0
+        flags       : PINYIN_CORRECT_UE_TO_VE
     },
     {  /* 307 */
         text        : "luen",
@@ -4058,15 +4058,15 @@ static const Pinyin pinyin_table[] = {
     {  /* 312 */
         text        : "lve",
         sheng       : "l",
-        yun         : "ue",
+        yun         : "ve",
         sheng_id    : PINYIN_ID_L,
-        yun_id      : PINYIN_ID_UE,
+        yun_id      : PINYIN_ID_VE,
         fsheng_id   : PINYIN_ID_N,
         fyun_id     : PINYIN_ID_ZERO,
         fsheng_id_2 : PINYIN_ID_R,
         fyun_id_2   : PINYIN_ID_ZERO,
         len         : 3,
-        flags       : PINYIN_CORRECT_VE_TO_UE
+        flags       : 0
     },
     {  /* 313 */
         text        : "m",
@@ -4903,15 +4903,15 @@ static const Pinyin pinyin_table[] = {
     {  /* 377 */
         text        : "nue",
         sheng       : "n",
-        yun         : "ue",
+        yun         : "ve",
         sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UE,
+        yun_id      : PINYIN_ID_VE,
         fsheng_id   : PINYIN_ID_L,
         fyun_id     : PINYIN_ID_ZERO,
         fsheng_id_2 : PINYIN_ID_ZERO,
         fyun_id_2   : PINYIN_ID_ZERO,
         len         : 3,
-        flags       : 0
+        flags       : PINYIN_CORRECT_UE_TO_VE
     },
     {  /* 378 */
         text        : "nun",
@@ -4955,15 +4955,15 @@ static const Pinyin pinyin_table[] = {
     {  /* 381 */
         text        : "nve",
         sheng       : "n",
-        yun         : "ue",
+        yun         : "ve",
         sheng_id    : PINYIN_ID_N,
-        yun_id      : PINYIN_ID_UE,
+        yun_id      : PINYIN_ID_VE,
         fsheng_id   : PINYIN_ID_L,
         fyun_id     : PINYIN_ID_ZERO,
         fsheng_id_2 : PINYIN_ID_ZERO,
         fyun_id_2   : PINYIN_ID_ZERO,
         len         : 3,
-        flags       : PINYIN_CORRECT_VE_TO_UE
+        flags       : 0
     },
     {  /* 382 */
         text        : "o",
@@ -6045,19 +6045,6 @@ static const Pinyin pinyin_table[] = {
         flags       : PINYIN_FUZZY_UANG_UAN
     },
     {  /* 465 */
-        text        : "rue",
-        sheng       : "r",
-        yun         : "ue",
-        sheng_id    : PINYIN_ID_R,
-        yun_id      : PINYIN_ID_UE,
-        fsheng_id   : PINYIN_ID_L,
-        fyun_id     : PINYIN_ID_ZERO,
-        fsheng_id_2 : PINYIN_ID_ZERO,
-        fyun_id_2   : PINYIN_ID_ZERO,
-        len         : 3,
-        flags       : PINYIN_FUZZY_R_L
-    },
-    {  /* 466 */
         text        : "ruei",
         sheng       : "r",
         yun         : "ui",
@@ -6070,7 +6057,7 @@ static const Pinyin pinyin_table[] = {
         len         : 4,
         flags       : PINYIN_CORRECT_UEI_TO_UI
     },
-    {  /* 467 */
+    {  /* 466 */
         text        : "ruen",
         sheng       : "r",
         yun         : "un",
@@ -6083,7 +6070,7 @@ static const Pinyin pinyin_table[] = {
         len         : 4,
         flags       : PINYIN_CORRECT_UEN_TO_UN
     },
-    {  /* 468 */
+    {  /* 467 */
         text        : "rui",
         sheng       : "r",
         yun         : "ui",
@@ -6096,7 +6083,7 @@ static const Pinyin pinyin_table[] = {
         len         : 3,
         flags       : 0
     },
-    {  /* 469 */
+    {  /* 468 */
         text        : "run",
         sheng       : "r",
         yun         : "un",
@@ -6109,7 +6096,7 @@ static const Pinyin pinyin_table[] = {
         len         : 3,
         flags       : 0
     },
-    {  /* 470 */
+    {  /* 469 */
         text        : "ruo",
         sheng       : "r",
         yun         : "uo",
@@ -6122,7 +6109,7 @@ static const Pinyin pinyin_table[] = {
         len         : 3,
         flags       : 0
     },
-    {  /* 471 */
+    {  /* 470 */
         text        : "rv",
         sheng       : "r",
         yun         : "v",
@@ -6135,6 +6122,19 @@ static const Pinyin pinyin_table[] = {
         len         : 2,
         flags       : PINYIN_FUZZY_R_L
     },
+    {  /* 471 */
+        text        : "rve",
+        sheng       : "r",
+        yun         : "ve",
+        sheng_id    : PINYIN_ID_R,
+        yun_id      : PINYIN_ID_VE,
+        fsheng_id   : PINYIN_ID_L,
+        fyun_id     : PINYIN_ID_ZERO,
+        fsheng_id_2 : PINYIN_ID_ZERO,
+        fyun_id_2   : PINYIN_ID_ZERO,
+        len         : 3,
+        flags       : PINYIN_FUZZY_R_L
+    },
     {  /* 472 */
         text        : "s",
         sheng       : "s",
@@ -9248,13 +9248,13 @@ static const Pinyin *special_table[][4] = {
     { &pinyin_table[295],  &pinyin_table[6],    &pinyin_table[294],  &pinyin_table[161],  }, /* ling ao => lin gao */
     { &pinyin_table[295],  &pinyin_table[125],  &pinyin_table[294],  &pinyin_table[162],  }, /* ling e => lin ge */
     { &pinyin_table[295],  &pinyin_table[126],  &pinyin_table[294],  &pinyin_table[164],  }, /* ling ei => lin gei */
-    { &pinyin_table[306],  &pinyin_table[434],  &pinyin_table[303],  &pinyin_table[128],  }, /* lue r => lu er */
     { &pinyin_table[309],  &pinyin_table[0],    &pinyin_table[303],  &pinyin_table[342],  }, /* lun a => lu na */
     { &pinyin_table[309],  &pinyin_table[4],    &pinyin_table[303],  &pinyin_table[346],  }, /* lun an => lu nan */
     { &pinyin_table[309],  &pinyin_table[5],    &pinyin_table[303],  &pinyin_table[347],  }, /* lun ang => lu nang */
     { &pinyin_table[309],  &pinyin_table[6],    &pinyin_table[303],  &pinyin_table[348],  }, /* lun ao => lu nao */
     { &pinyin_table[309],  &pinyin_table[125],  &pinyin_table[303],  &pinyin_table[349],  }, /* lun e => lu ne */
     { &pinyin_table[309],  &pinyin_table[126],  &pinyin_table[303],  &pinyin_table[351],  }, /* lun ei => lu nei */
+    { &pinyin_table[312],  &pinyin_table[434],  &pinyin_table[311],  &pinyin_table[128],  }, /* lve r => lv er */
     { &pinyin_table[318],  &pinyin_table[0],    &pinyin_table[314],  &pinyin_table[342],  }, /* man a => ma na */
     { &pinyin_table[318],  &pinyin_table[4],    &pinyin_table[314],  &pinyin_table[346],  }, /* man an => ma nan */
     { &pinyin_table[318],  &pinyin_table[5],    &pinyin_table[314],  &pinyin_table[347],  }, /* man ang => ma nang */
@@ -9334,7 +9334,7 @@ static const Pinyin *special_table[][4] = {
     { &pinyin_table[366],  &pinyin_table[126],  &pinyin_table[365],  &pinyin_table[164],  }, /* ning ei => nin gei */
     { &pinyin_table[366],  &pinyin_table[127],  &pinyin_table[365],  &pinyin_table[166],  }, /* ning en => nin gen */
     { &pinyin_table[366],  &pinyin_table[383],  &pinyin_table[365],  &pinyin_table[171],  }, /* ning ou => nin gou */
-    { &pinyin_table[377],  &pinyin_table[434],  &pinyin_table[374],  &pinyin_table[128],  }, /* nue r => nu er */
+    { &pinyin_table[381],  &pinyin_table[434],  &pinyin_table[380],  &pinyin_table[128],  }, /* nve r => nv er */
     { &pinyin_table[389],  &pinyin_table[0],    &pinyin_table[385],  &pinyin_table[342],  }, /* pan a => pa na */
     { &pinyin_table[389],  &pinyin_table[4],    &pinyin_table[385],  &pinyin_table[346],  }, /* pan an => pa nan */
     { &pinyin_table[389],  &pinyin_table[6],    &pinyin_table[385],  &pinyin_table[348],  }, /* pan ao => pa nao */
@@ -9398,14 +9398,14 @@ static const Pinyin *special_table[][4] = {
     { &pinyin_table[447],  &pinyin_table[126],  &pinyin_table[446],  &pinyin_table[164],  }, /* reng ei => ren gei */
     { &pinyin_table[447],  &pinyin_table[127],  &pinyin_table[446],  &pinyin_table[166],  }, /* reng en => ren gen */
     { &pinyin_table[447],  &pinyin_table[383],  &pinyin_table[446],  &pinyin_table[171],  }, /* reng ou => ren gou */
-    { &pinyin_table[469],  &pinyin_table[0],    &pinyin_table[462],  &pinyin_table[342],  }, /* run a => ru na */
-    { &pinyin_table[469],  &pinyin_table[2],    &pinyin_table[462],  &pinyin_table[344],  }, /* run ai => ru nai */
-    { &pinyin_table[469],  &pinyin_table[4],    &pinyin_table[462],  &pinyin_table[346],  }, /* run an => ru nan */
-    { &pinyin_table[469],  &pinyin_table[5],    &pinyin_table[462],  &pinyin_table[347],  }, /* run ang => ru nang */
-    { &pinyin_table[469],  &pinyin_table[6],    &pinyin_table[462],  &pinyin_table[348],  }, /* run ao => ru nao */
-    { &pinyin_table[469],  &pinyin_table[125],  &pinyin_table[462],  &pinyin_table[349],  }, /* run e => ru ne */
-    { &pinyin_table[469],  &pinyin_table[126],  &pinyin_table[462],  &pinyin_table[351],  }, /* run ei => ru nei */
-    { &pinyin_table[469],  &pinyin_table[127],  &pinyin_table[462],  &pinyin_table[353],  }, /* run en => ru nen */
+    { &pinyin_table[468],  &pinyin_table[0],    &pinyin_table[462],  &pinyin_table[342],  }, /* run a => ru na */
+    { &pinyin_table[468],  &pinyin_table[2],    &pinyin_table[462],  &pinyin_table[344],  }, /* run ai => ru nai */
+    { &pinyin_table[468],  &pinyin_table[4],    &pinyin_table[462],  &pinyin_table[346],  }, /* run an => ru nan */
+    { &pinyin_table[468],  &pinyin_table[5],    &pinyin_table[462],  &pinyin_table[347],  }, /* run ang => ru nang */
+    { &pinyin_table[468],  &pinyin_table[6],    &pinyin_table[462],  &pinyin_table[348],  }, /* run ao => ru nao */
+    { &pinyin_table[468],  &pinyin_table[125],  &pinyin_table[462],  &pinyin_table[349],  }, /* run e => ru ne */
+    { &pinyin_table[468],  &pinyin_table[126],  &pinyin_table[462],  &pinyin_table[351],  }, /* run ei => ru nei */
+    { &pinyin_table[468],  &pinyin_table[127],  &pinyin_table[462],  &pinyin_table[353],  }, /* run en => ru nen */
     { &pinyin_table[477],  &pinyin_table[125],  &pinyin_table[473],  &pinyin_table[349],  }, /* san e => sa ne */
     { &pinyin_table[477],  &pinyin_table[126],  &pinyin_table[473],  &pinyin_table[351],  }, /* san ei => sa nei */
     { &pinyin_table[478],  &pinyin_table[0],    &pinyin_table[477],  &pinyin_table[155],  }, /* sang a => san ga */
index f98e70d..0dbdcd1 100644 (file)
@@ -60,6 +60,7 @@ namespace PY {
 #define PINYIN_ID_UAN   (50)
 #define PINYIN_ID_UANG  (51)
 #define PINYIN_ID_UE    (52)
+#define PINYIN_ID_VE    PINYIN_ID_UE
 #define PINYIN_ID_UI    (53)
 #define PINYIN_ID_UN    (54)
 #define PINYIN_ID_UO    (55)
@@ -73,35 +74,36 @@ namespace PY {
 #define PINYIN_CORRECT_IOU_TO_IU    (1 << 3)
 #define PINYIN_CORRECT_UEI_TO_UI    (1 << 4)
 #define PINYIN_CORRECT_UEN_TO_UN    (1 << 5)
-#define PINYIN_CORRECT_VE_TO_UE     (1 << 6)
-#define PINYIN_CORRECT_ALL          (0x0000007e)
+#define PINYIN_CORRECT_UE_TO_VE     (1 << 6)
+#define PINYIN_CORRECT_VE_TO_UE     (1 << 7)
+#define PINYIN_CORRECT_ALL          (0x000000fe)
 
-#define PINYIN_FUZZY_C_CH           (1 << 7)
-#define PINYIN_FUZZY_CH_C           (1 << 8)
-#define PINYIN_FUZZY_Z_ZH           (1 << 9)
-#define PINYIN_FUZZY_ZH_Z           (1 << 10)
-#define PINYIN_FUZZY_S_SH           (1 << 11)
-#define PINYIN_FUZZY_SH_S           (1 << 12)
-#define PINYIN_FUZZY_L_N            (1 << 13)
-#define PINYIN_FUZZY_N_L            (1 << 14)
-#define PINYIN_FUZZY_F_H            (1 << 15)
-#define PINYIN_FUZZY_H_F            (1 << 16)
-#define PINYIN_FUZZY_L_R            (1 << 17)
-#define PINYIN_FUZZY_R_L            (1 << 18)
-#define PINYIN_FUZZY_K_G            (1 << 19)
-#define PINYIN_FUZZY_G_K            (1 << 20)
+#define PINYIN_FUZZY_C_CH           (1 << 8)
+#define PINYIN_FUZZY_CH_C           (1 << 9)
+#define PINYIN_FUZZY_Z_ZH           (1 << 10)
+#define PINYIN_FUZZY_ZH_Z           (1 << 11)
+#define PINYIN_FUZZY_S_SH           (1 << 12)
+#define PINYIN_FUZZY_SH_S           (1 << 13)
+#define PINYIN_FUZZY_L_N            (1 << 14)
+#define PINYIN_FUZZY_N_L            (1 << 15)
+#define PINYIN_FUZZY_F_H            (1 << 16)
+#define PINYIN_FUZZY_H_F            (1 << 17)
+#define PINYIN_FUZZY_L_R            (1 << 18)
+#define PINYIN_FUZZY_R_L            (1 << 19)
+#define PINYIN_FUZZY_K_G            (1 << 20)
+#define PINYIN_FUZZY_G_K            (1 << 21)
 
-#define PINYIN_FUZZY_AN_ANG         (1 << 21)
-#define PINYIN_FUZZY_ANG_AN         (1 << 22)
-#define PINYIN_FUZZY_EN_ENG         (1 << 23)
-#define PINYIN_FUZZY_ENG_EN         (1 << 24)
-#define PINYIN_FUZZY_IN_ING         (1 << 25)
-#define PINYIN_FUZZY_ING_IN         (1 << 26)
-#define PINYIN_FUZZY_IAN_IANG       (1 << 27)
-#define PINYIN_FUZZY_IANG_IAN       (1 << 28)
-#define PINYIN_FUZZY_UAN_UANG       (1 << 29)
-#define PINYIN_FUZZY_UANG_UAN       (1 << 30)
-#define PINYIN_FUZZY_ALL            (0x7fffff80)
+#define PINYIN_FUZZY_AN_ANG         (1 << 22)
+#define PINYIN_FUZZY_ANG_AN         (1 << 23)
+#define PINYIN_FUZZY_EN_ENG         (1 << 24)
+#define PINYIN_FUZZY_ENG_EN         (1 << 25)
+#define PINYIN_FUZZY_IN_ING         (1 << 26)
+#define PINYIN_FUZZY_ING_IN         (1 << 27)
+#define PINYIN_FUZZY_IAN_IANG       (1 << 28)
+#define PINYIN_FUZZY_IANG_IAN       (1 << 29)
+#define PINYIN_FUZZY_UAN_UANG       (1 << 30)
+#define PINYIN_FUZZY_UANG_UAN       (1 << 31)
+#define PINYIN_FUZZY_ALL            (0xffffff00)
 
 typedef struct _Pinyin Pinyin;
 struct _Pinyin {