add genchewingkey.py
authorPeng Wu <alexepico@gmail.com>
Wed, 14 Dec 2011 06:56:40 +0000 (14:56 +0800)
committerPeng Wu <alexepico@gmail.com>
Wed, 14 Dec 2011 06:57:09 +0000 (14:57 +0800)
scripts/Makefile.data
scripts/chewing_enum.h.in
scripts/chewingkey.py
scripts/genchewingkey.py [new file with mode: 0644]
scripts/utils.py [new file with mode: 0644]

index 9c9f823..1457407 100644 (file)
@@ -11,6 +11,7 @@ update-header:
        python3 genpinyinheader.py > ../src/storage/pinyin_parser_table.h
        python3 gendoublepinyinheader.py > ../src/storage/double_pinyin_table.h
        python3 genbopomofoheader.py > ../src/storage/chewing_table.h
+       python3 genchewingkey.py > ../src/storage/chewing_enum.h
 
 
 .PHONY: pinyins.txt
index dc230ae..7280b65 100644 (file)
@@ -4,6 +4,45 @@
 #ifndef CHEWING_ENUM_H
 #define CHEWING_ENUM_H
 
+namespace pinyin{
 
+/**
+ * @brief enums of chewing initial element.
+ */
+
+enum ChewingInitial
+{
+@CHEWING_INITIAL@
+};
+
+
+/**
+ * @brief enums of chewing middle element.
+ */
+
+enum ChewingMiddle
+{
+@CHEWING_MIDDLE@
+};
+
+
+/**
+ * @brief enums of chewing final element.
+ */
+enum ChewingFinal
+{
+@CHEWING_FINAL@
+};
+
+
+/**
+ * @brief enums of chewing tone element.
+ */
+enum ChewingTone
+{
+@CHEWING_TONE@
+};
+
+};
 
 #endif
index 1372fcb..51c89ea 100644 (file)
@@ -145,6 +145,7 @@ def gen_table_index(content_table):
     return ",\n".join(entries)
 
 
+### main function ###
 if __name__ == "__main__":
     print(gen_initials())
     print(gen_middles())
diff --git a/scripts/genchewingkey.py b/scripts/genchewingkey.py
new file mode 100644 (file)
index 0000000..79b8d54
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- 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.
+
+
+from utils import expand_file
+from chewingkey import gen_initials, gen_middles, gen_finals, gen_tones
+
+
+def get_table_content(tablename):
+    if tablename == 'CHEWING_INITIAL':
+        return gen_initials()
+    if tablename == 'CHEWING_MIDDLE':
+        return gen_middles()
+    if tablename == 'CHEWING_FINAL':
+        return gen_finals()
+    if tablename == 'CHEWING_TONE':
+        return gen_tones()
+
+
+### main function ###
+if __name__ == "__main__":
+    expand_file("chewing_enum.h.in", get_table_content)
+
diff --git a/scripts/utils.py b/scripts/utils.py
new file mode 100644 (file)
index 0000000..77eecbe
--- /dev/null
@@ -0,0 +1,36 @@
+# -*- 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 os
+
+def expand_file(filename, get_table_content):
+    infile = open(filename, "r")
+    for line in infile.readlines():
+        line = line.rstrip(os.linesep)
+        if len(line) < 3 :
+            print(line)
+            continue
+        if line[0] == '@' and line[-1] == '@':
+            tablename = line[1:-1]
+            print(get_table_content(tablename))
+        else:
+            print(line)