From 7bfcb3735dd0cb7526e25e24a37adca815cad6b5 Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Mon, 16 Jan 2012 16:40:12 +0800 Subject: fixes full pinyin parser2 --- src/storage/pinyin_parser2.cpp | 22 ++++++++++++++++++---- 1 file 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; + } } } } -- cgit