summaryrefslogtreecommitdiffstats
path: root/src/ExtEditor.cc
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2010-07-01 11:46:59 +0800
committerPeng Wu <alexepico@gmail.com>2010-07-01 11:46:59 +0800
commitf754d164d05cc38832837ee75337cd9da8247ca0 (patch)
treec5f5d144aecbd8ca3173c52bf5bc84f75ac760ac /src/ExtEditor.cc
parent607a7ec4e9c67155d931fa66f5d13cb04d986f20 (diff)
downloadibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.tar.gz
ibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.tar.xz
ibus-libpinyin-f754d164d05cc38832837ee75337cd9da8247ca0.zip
re-factor chinese number code.
Diffstat (limited to 'src/ExtEditor.cc')
-rw-r--r--src/ExtEditor.cc99
1 files changed, 0 insertions, 99 deletions
diff --git a/src/ExtEditor.cc b/src/ExtEditor.cc
index 547b847..3567772 100644
--- a/src/ExtEditor.cc
+++ b/src/ExtEditor.cc
@@ -34,11 +34,6 @@ extern "C" {
namespace PY {
-/* forward declaration function about Chinese Number. */
-static std::string translate_to_simplest(gint64 num);
-static std::string translate_to_simplified(gint64 num);
-static std::string translate_to_traditional(gint64 num);
-
/* Write digit/alpha/none Label generator here.
* foreach (results): 1, from get_retval; 2..n from get_retvals.
@@ -782,100 +777,6 @@ ExtEditor::updateAuxiliaryText (void)
Editor::updateAuxiliaryText (aux_text, TRUE);
}
-static const char * numbers [2][10] = {
- {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖",},
- {"〇", "一", "二", "三", "四", "五", "六", "七", "八", "九",},
-};
-
-struct unit_t{
- const char * unit_zh_name; // Chinese Character
- const int digits; // Position in string.
- const bool persist; // Whether to force eating zero and force inserting into result string.
-};
-
-static unit_t units[] ={
- {"兆", 12, true},
- {"亿", 8, true},
- {"万", 4, true},
- {"千", 3, false},
- {"百", 2, false},
- {"十", 1, false},
- {"", 0, true},
-};
-
-static std::string translate_to_simplest(gint64 num)
-{
- std::string result = "";
- if ( num == 0 )
- result = numbers[1][0];
- while (num > 0) {
- int remains = num % 10;
- num = num / 10;
- result = std::string ( numbers[1][remains] ) + result;
- }
-
- return result;
-}
-
-static std::string translate_to_longform(gint64 num, const char * number[10])
-{
- std::string result = "";
- int cur_pos = -1;
- bool eat_zero = false;
-
- while (num > 0) {
- int remains = num % 10;
- num = num / 10;
- cur_pos ++;
- std::string unit = "";
- int pos = cur_pos;
- size_t i = 6;
- while ( pos > 0 ) {
- for ( i = 0; i < sizeof (units)/ sizeof(units[0]); ++i) {
- pos = pos % units[i].digits;
- if ( pos == 0 )
- break;
- }
- }
-
- if ( units[i].persist ) {
- result = std::string (units[i].unit_zh_name) + result;
- eat_zero = true;
- }
-
- if ( remains == 0){
- if ( eat_zero ) continue;
-
- result = std::string (number[0]) + result;
- eat_zero = true;
- continue;
- }else{
- eat_zero = false;
- }
-
- if (num == 0 && remains == 1 && i == 5)
- result = std::string (units[i].unit_zh_name) + result;
- else if (units[i].persist)
- result = std::string (number[remains]) + result;
- else
- result = std::string (number[remains]) + std::string (units[i].unit_zh_name) + result;
- }
-
- return result;
-}
-
-static std::string translate_to_simplified(gint64 num)
-{
- return translate_to_longform(num, numbers[1]);
-}
-
-static std::string translate_to_traditional(gint64 num)
-{
- if ( 0 == num )
- return numbers[0][0];
- return translate_to_longform(num, numbers[0]);
-}
-
};