| |
---|
| | } |
---|
| | |
---|
| | |
---|
| | /*! |
---|
| | \fn Romkan::loadTable(const String &filename) |
---|
| | */ |
---|
| | void Romkan::loadTable(const String &filename) |
---|
| | { |
---|
| | RomkanTable.clear(); |
---|
| | keepTable.clear(); |
---|
| | |
---|
| | FILE *f = fopen(filename.c_str(),"r"); |
---|
| | if (!f) return; |
---|
| | |
---|
| | while(-1) { |
---|
| | char s[256]; |
---|
| | if(fgets(s,256,f) == NULL) break; |
---|
| | String k,r; |
---|
| | unsigned int i = 0; |
---|
| | for(;s[i];i ++) { |
---|
| | if (s[i] == ' ') { |
---|
| | if (k.size()) break; |
---|
| | else continue; |
---|
| | } |
---|
| | if (s[i] == '#') break; |
---|
| | if ((s[i] == '\\') && (s[i + 1] != 0)) { |
---|
| | i ++; |
---|
| | } |
---|
| | k += s[i]; |
---|
| | } |
---|
| | if ((!k.size()) || (s[i] == 0) || (s[i] == '#')) continue; |
---|
| | i ++; |
---|
| | for(;s[i];i ++) { |
---|
| | if ((s[i] == '#') || (s[i] == '\n')) break; |
---|
| | if (s[i] == ' ') { |
---|
| | if (r.size()) break; |
---|
| | else continue; |
---|
| | } |
---|
| | if ((s[i] == '\\') && (s[i + 1] != 0)) { |
---|
| | i ++; |
---|
| | } |
---|
| | r += s[i]; |
---|
| | } |
---|
| | if (!r.size()) continue; |
---|
| | RomkanTable.insert(pair<String,WideString>(k,utf8_mbstowcs(r))); |
---|
| | |
---|
| | for(unsigned int j = k.length();j > 1;j --) { |
---|
| | String keep = k.substr(0,j - 1); |
---|
| | if ((keepTable.find(keep) == keepTable.end()) && (RomkanTable.find(keep) == RomkanTable.end())) { |
---|
| | keepTable.insert(keep); |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | fclose(f); |
---|
| | |
---|
| | } |
---|
| | |
---|
| | |
---|
| | /*! |
---|
| | \fn Romkan::init() |
---|
| | */ |
---|
| | void Romkan::init() |
---|
| | { |
---|
| |
---|
| | String(SCIM_DEFAULT_WNN_KEY_ROMKAN_ASCIIMODE))); |
---|
| | scim_string_to_key_list(key_wascii_mode, |
---|
| | config->read(String(SCIM_CONFIG_WNN_KEY_ROMKAN_WASCIIMODE), |
---|
| | String(SCIM_DEFAULT_WNN_KEY_ROMKAN_WASCIIMODE))); |
---|
| | String rk_table = config->read(SCIM_CONFIG_WNN_ROMKAN_TABLE_FILE,String(SCIM_DEFAULT_WNN_ROMKAN_TABLE_FILE)); |
---|
| | |
---|
| | if (rk_table.size()) { |
---|
| | loadTable(rk_table); |
---|
| | return; |
---|
| | } |
---|
| | |
---|
| | RomkanTable.clear(); |
---|
| | keepTable.clear(); |
---|
| | |
---|
| |
---|
| | } |
---|
| | } |
---|
| | i += 2; |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| | } |
---|
| | |
---|
| | |
---|
| |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| | |
---|
| | |
---|
| | |