summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2011-11-02 13:19:51 +0800
committerPeng Wu <alexepico@gmail.com>2011-11-02 13:19:51 +0800
commit75546099491c6082f5f8fe0a16f7dd1cbd5d4fdb (patch)
tree0e358a741f36373c1140bf1f8a34ecb286fb9baa
parent2ef0735e5fafa28a51ec04cf8e24e21c7486a040 (diff)
downloadlibpinyin-75546099491c6082f5f8fe0a16f7dd1cbd5d4fdb.tar.gz
libpinyin-75546099491c6082f5f8fe0a16f7dd1cbd5d4fdb.tar.xz
libpinyin-75546099491c6082f5f8fe0a16f7dd1cbd5d4fdb.zip
write gentable.py in progress
-rw-r--r--scripts/gentable.py70
-rw-r--r--scripts/pinyintable.py4
2 files changed, 72 insertions, 2 deletions
diff --git a/scripts/gentable.py b/scripts/gentable.py
new file mode 100644
index 0000000..0e98379
--- /dev/null
+++ b/scripts/gentable.py
@@ -0,0 +1,70 @@
+# -*- 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.
+
+import operator
+from pinyintable import *
+
+
+content_table = []
+pinyin_index = []
+bopomofo_index = []
+
+#pinyin table
+def filter_pinyin_list():
+ for (correct, wrong, bopomofo, flags, chewing) in gen_pinyin_list():
+ flags = '|'.join(flags)
+ chewing = "ChewingKey({0})".format(', '.join(chewing))
+ content_table.append((correct, bopomofo, chewing))
+ if "IS_PINYIN" in flags:
+ pinyin_index.append((wrong, flags, correct))
+ if "IS_CHEWING" in flags:
+ bopomofo_index.append((bopomofo, flags, bopomofo))
+
+
+def sort_all():
+ global content_table, pinyin_index, bopomofo_index
+ #remove duplicates
+ content_table = list(set(content_table))
+ #define sort function
+ sortfunc = operator.itemgetter(0)
+ #begin sort
+ content_table = sorted(content_table, key=sortfunc)
+ #prepend zero item
+ content_table.insert(0, ("", "", "ChewingKey()"))
+ #sort index
+ pinyin_index = sorted(pinyin_index, key=sortfunc)
+ bopomofo_index = sorted(bopomofo_index, key=sortfunc)
+
+
+def gen_context_table():
+ entries = []
+ for ((correct, bopomofo, chewing)) in content_table:
+ entry = '{{"{0}", "{1}", {2}}}'.format(correct, bopomofo, chewing)
+ entries.append(entry)
+ return ',\n'.join(entries)
+
+
+### main function ###
+if __name__ == "__main__":
+ filter_pinyin_list()
+ sort_all()
+ table = gen_context_table()
+ print(table)
diff --git a/scripts/pinyintable.py b/scripts/pinyintable.py
index ca22aa1..3457aba 100644
--- a/scripts/pinyintable.py
+++ b/scripts/pinyintable.py
@@ -155,5 +155,5 @@ if __name__ == "__main__":
check_pinyin_chewing_map()
#dump
- for pinyin_key in gen_pinyin_list():
- print (pinyin_key)
+ for p in gen_pinyin_list():
+ print (p)