summaryrefslogtreecommitdiffstats
path: root/scripts/chewingkey.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/chewingkey.py')
-rw-r--r--scripts/chewingkey.py150
1 files changed, 150 insertions, 0 deletions
diff --git a/scripts/chewingkey.py b/scripts/chewingkey.py
new file mode 100644
index 0000000..5f5770f
--- /dev/null
+++ b/scripts/chewingkey.py
@@ -0,0 +1,150 @@
+# -*- 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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')
+
+
+def gen_table_index(content_table):
+ entries = []
+ for i in range(0, len(CHEWING_INITIAL_LIST)):
+ initial = CHEWING_INITIAL_LIST[i]
+ for m in range(0, len(CHEWING_MIDDLE_LIST)):
+ middle = CHEWING_MIDDLE_LIST[m]
+ for f in range(0, len(CHEWING_FINAL_LIST)):
+ final = CHEWING_FINAL_LIST[f]
+ chewingkey = 'ChewingKey({0}, {1}, {2})'.format(initial, middle, final)
+ index = -1
+ try:
+ index = [x[2] for x in content_table].index(chewingkey)
+ except ValueError:
+ pass
+
+ entry = '{0:<7} /* {1} */'.format(index, chewingkey)
+ entries.append(entry)
+ return ",\n".join(entries)
+
+
+### main function ###
+if __name__ == "__main__":
+ print(gen_initials() + gen_middles() + gen_finals() + gen_tones())