diff options
author | Peng Wu <alexepico@gmail.com> | 2012-01-16 16:40:12 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2012-01-16 16:40:12 +0800 |
commit | 640a3a51f09ad64f02e562b938cd387c4e8043f5 (patch) | |
tree | 4f24d48389d3119d06875d23d72837d40f87b114 /src | |
parent | e0c9f028a1580816870e028c5337b2dce0b495ac (diff) | |
download | libpinyin-640a3a51f09ad64f02e562b938cd387c4e8043f5.tar.gz libpinyin-640a3a51f09ad64f02e562b938cd387c4e8043f5.tar.xz libpinyin-640a3a51f09ad64f02e562b938cd387c4e8043f5.zip |
fixes full pinyin parser2
Diffstat (limited to 'src')
-rw-r--r-- | src/storage/pinyin_parser2.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/storage/pinyin_parser2.cpp b/src/storage/pinyin_parser2.cpp index 081b069..deef306 100644 --- a/src/storage/pinyin_parser2.cpp +++ b/src/storage/pinyin_parser2.cpp @@ -380,10 +380,24 @@ int FullPinyinParser2::parse (pinyin_option_t options, ChewingKeyVector & keys, value.m_num_keys < nextstep->m_num_keys) *nextstep = value; if (value.m_parsed_len == nextstep->m_parsed_len && - value.m_num_keys == nextstep->m_num_keys && - value.m_key.m_initial != CHEWING_ZERO_INITIAL && - nextstep->m_key.m_initial == CHEWING_ZERO_INITIAL) - *nextstep = value; + value.m_num_keys == nextstep->m_num_keys) { + + /* "kaneiji" -> "ka'nei'ji" */ + if ((value.m_key.m_initial != CHEWING_ZERO_INITIAL && + !(value.m_key.m_middle == CHEWING_ZERO_MIDDLE && + value.m_key.m_final == CHEWING_ZERO_FINAL)) && + nextstep->m_key.m_initial == CHEWING_ZERO_INITIAL) + *nextstep = value; + + /* "xierqi" -> "xi'er'qi." */ + if ((value.m_key.m_initial == CHEWING_ZERO_INITIAL && + value.m_key.m_middle == CHEWING_ZERO_MIDDLE && + value.m_key.m_final == CHEWING_ER) && + (nextstep->m_key.m_initial == CHEWING_R && + nextstep->m_key.m_middle == CHEWING_ZERO_MIDDLE && + nextstep->m_key.m_final == CHEWING_ZERO_FINAL)) + *nextstep = value; + } } } } |