summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-12-13 15:54:30 +0800
committerPeng Wu <alexepico@gmail.com>2011-12-13 15:54:30 +0800
commitc922c671b78d176c372eb323cacde33dba24b93b (patch)
tree313608a20cf80eb0aa58218feb19149fb22c50cc
parent44d567eee4767c7b0bc4a2feb8cb9faaf8c83019 (diff)
downloadlibpinyin-c922c671b78d176c372eb323cacde33dba24b93b.zip
libpinyin-c922c671b78d176c372eb323cacde33dba24b93b.tar.gz
libpinyin-c922c671b78d176c372eb323cacde33dba24b93b.tar.xz
begin to write chewingkey.py
-rw-r--r--scripts/chewingkey.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/scripts/chewingkey.py b/scripts/chewingkey.py
new file mode 100644
index 0000000..dc0f2a2
--- /dev/null
+++ b/scripts/chewingkey.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+# vim:set et sts=4 sw=4:
+#
+# libpinyin - Library to deal with pinyin.
+#
+# Copyright (C) 2011 Peng Wu <alexepico@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+CHEWING_INITIAL_LIST = [
+ 'CHEWING_ZERO_INITIAL', #Zero Initial
+ 'CHEWING_B', #"ㄅ"
+ 'CHEWING_C', #"ㄘ"
+ 'CHEWING_CH', #"ㄔ"
+ 'CHEWING_D', #"ㄉ"
+ 'CHEWING_F', #"ㄈ"
+ 'CHEWING_H', #"ㄏ"
+ 'CHEWING_G', #"ㄍ"
+ 'CHEWING_K', #"ㄎ"
+ 'CHEWING_J', #"ㄐ"
+ 'CHEWING_M', #"ㄇ"
+ 'CHEWING_N', #"ㄋ"
+ 'CHEWING_L', #"ㄌ"
+ 'CHEWING_R', #"ㄖ"
+ 'CHEWING_P', #"ㄆ"
+ 'CHEWING_Q', #"ㄑ"
+ 'CHEWING_S', #"ㄙ"
+ 'CHEWING_SH', #"ㄕ"
+ 'CHEWING_T', #"ㄊ"
+ 'PINYIN_W', #Invalid Chewing
+ 'CHEWING_X', #"ㄒ"
+ 'PINYIN_Y', #Invalid Chewing
+ 'CHEWING_Z', #"ㄗ"
+ 'CHEWING_ZH' #"ㄓ"
+]
+
+
+CHEWING_MIDDLE_LIST = [
+ 'CHEWING_ZERO_MIDDLE', #Zero Middle
+ 'CHEWING_I', #"ㄧ"
+ 'CHEWING_U', #"ㄨ"
+ 'CHEWING_V' #"ㄩ"
+]
+
+
+CHEWING_FINAL_LIST = [
+ 'CHEWING_ZERO_FINAL', #Zero Final
+ 'CHEWING_A', #"ㄚ"
+ 'CHEWING_AI', #"ㄞ"
+ 'CHEWING_AN', #"ㄢ"
+ 'CHEWING_ANG', #"ㄤ"
+ 'CHEWING_AO', #"ㄠ"
+ 'CHEWING_E', #"ㄝ" and "ㄜ"
+ 'INVALID_EA', #Invalid Pinyin/Chewing
+ 'CHEWING_EI', #"ㄟ"
+ 'CHEWING_EN', #"ㄣ"
+ 'CHEWING_ENG', #"ㄥ"
+ 'CHEWING_ER', #"ㄦ"
+ 'CHEWING_NG', #"ㄫ"
+ 'CHEWING_O', #"ㄛ"
+ 'PINYIN_ONG', #"ueng"
+ 'CHEWING_OU', #"ㄡ"
+ 'PINYIN_IN', #"ien"
+ 'PINYIN_ING' #"ieng"
+]
+
+
+CHEWING_TONE_LIST = [
+ 'CHEWING_ZERO_TONE', #Zero Tone
+ 'CHEWING_1', #" "
+ 'CHEWING_2', #'ˊ'
+ 'CHEWING_3', #'ˇ'
+ 'CHEWING_4', #'ˋ'
+ 'CHEWING_5' #'˙'
+]
+
+
+def gen_entries(items, last_enum, num_enum):
+ entries = []
+ for enum, item in enumerate(items, start=0):
+ entry = '{0} = {1}'.format(item, enum)
+ entries.append(entry)
+
+ #last enum
+ entry = last_enum + ' = ' + items[-1]
+ entries.append(entry)
+
+ #num enum
+ entry = num_enum
+ entries.append(entry)
+
+ return ",\n".join(entries)
+
+
+def gen_initials():
+ return gen_entries(CHEWING_INITIAL_LIST, 'CHEWING_LAST_INITIAL',
+ 'CHEWING_NUMBER_OF_INITIALS = CHEWING_LAST_INITIAL + 1')
+
+
+def gen_middles():
+ return gen_entries(CHEWING_MIDDLE_LIST, 'CHEWING_LAST_MIDDLE',
+ 'CHEWING_NUMBER_OF_MIDDLES = CHEWING_LAST_MIDDLE + 1')
+
+
+def gen_finals():
+ return gen_entries(CHEWING_FINAL_LIST, 'CHEWING_LAST_FINAL',
+ 'CHEWING_NUMBER_OF_FINALS = CHEWING_LAST_FINAL + 1')
+
+
+def gen_tones():
+ return gen_entries(CHEWING_TONE_LIST, 'CHEWING_LAST_TONE',
+ 'CHEWING_NUMBER_OF_TONES = CHEWING_LAST_TONE + 1')
+
+
+if __name__ == "__main__":
+ print(gen_initials())
+ print(gen_middles())
+ print(gen_finals())
+ print(gen_tones())