Tomotaka SUWA
t-suw****@users*****
2006年 12月 8日 (金) 23:38:57 JST
Index: AquaSKK/AsciiConversionMode.cpp
diff -u AquaSKK/AsciiConversionMode.cpp:1.7 AquaSKK/AsciiConversionMode.cpp:1.7.2.1
--- AquaSKK/AsciiConversionMode.cpp:1.7 Mon Jun 12 23:14:48 2006
+++ AquaSKK/AsciiConversionMode.cpp Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: AsciiConversionMode.cpp,v 1.7 2006/06/12 14:14:48 t-suwa Exp $
+ $Id: AsciiConversionMode.cpp,v 1.7.2.1 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -252,11 +252,7 @@
sendCurrentCandidateToServerToRegister();
// û³êÈ¢ªA§IÉmè³¹éB
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- parent->fix(numconv_.Apply(candidates[current_candidate_index]));
- } else {
- parent->fix(candidates[current_candidate_index]);
- }
+ parent->fix(convertNumeric(numconv_, candidates[current_candidate_index]));
parent->setEnabledAsciiConversionMode(false);
initialize();
@@ -316,10 +312,7 @@
else if(status == STATUS_BLACK) {
// »ÝÌóâðmèµÄ©çÅã̶ðíB
// »µÄú»µÄI¹B
- CppCFString str_to_fix(candidates[current_candidate_index]);
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- str_to_fix = numconv_.Apply(str_to_fix);
- }
+ CppCFString str_to_fix(convertNumeric(numconv_, candidates[current_candidate_index]));
str_to_fix.eraseLast(1);
// IÉM
@@ -410,11 +403,7 @@
sendCurrentCandidateToServerToRegister();
// »ÝÌóâðmèB
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- parent->fix(numconv_.Apply(candidates[current_candidate_index]));
- } else {
- parent->fix(candidates[current_candidate_index]);
- }
+ parent->fix(convertNumeric(numconv_, candidates[current_candidate_index]));
if(status == STATUS_BLACK_WITH_WINDOW) {
// EChEð¶éB
@@ -553,10 +542,8 @@
return CppCFString().append(0x25bd).append(index);
}
else if(status == STATUS_BLACK || status == STATUS_BLACK_WITH_WINDOW) {
- CppCFString str = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- str = numconv_.Apply(str);
- }
+ CppCFString str(convertNumeric(numconv_, candidates[current_candidate_index]));
+
// ¥»ÝÌóâ
return CppCFString().append(0x25bc).append(str);
}
@@ -574,19 +561,13 @@
result = index;
}
else if(status == STATUS_BLACK) {
- result = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- result = numconv_.Apply(candidates[current_candidate_index]);
- }
+ result = convertNumeric(numconv_, candidates[current_candidate_index]);
// IÉM
sendCurrentCandidateToServerToRegister();
}
else if(status == STATUS_BLACK_WITH_WINDOW) {
- result = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- result = numconv_.Apply(result);
- }
+ result = convertNumeric(numconv_, candidates[current_candidate_index]);
// IÉM
sendCurrentCandidateToServerToRegister();
@@ -629,11 +610,13 @@
::askServerTheCandidates(query, candidates);
// lÏ·ªLø©H
- if(ClientConfiguration::theInstance().useNumericConversion() && numconv_.Setup(index)) {
+ if(ClientConfiguration::theInstance().useNumericConversion() &&
+ numconv_.Setup(index.toStdString(kCFStringEncodingUTF8))) {
+ CppCFString normalized(numconv_.NormalizedKey().c_str(), kCFStringEncodingUTF8);
std::vector<CppCFString> result;
CppCFData cfdata;
- cfdata.own(CppCFString().append('-').append(numconv_.NormalizedKey()).toCFData());
+ cfdata.own(CppCFString().append('-').append(normalized).toCFData());
::askServerTheCandidates(cfdata, result);
@@ -670,11 +653,7 @@
std::vector<CppCFString> cands;
std::vector<CppCFString>::const_iterator ite;
for(ite = candidates.begin() + (show_cands_window_after_Nth_cand - 1); ite != candidates.end(); ++ ite) {
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- cands.push_back(numconv_.Apply(*ite));
- } else {
- cands.push_back(*ite);
- }
+ cands.push_back(convertNumeric(numconv_, *ite));
}
::openCandidatesWindow(join(SKK_MSG_DELIMITER, cands),
Index: AquaSKK/ChangeLog
diff -u AquaSKK/ChangeLog:1.33.2.3 AquaSKK/ChangeLog:1.33.2.4
--- AquaSKK/ChangeLog:1.33.2.3 Sat Dec 2 16:54:13 2006
+++ AquaSKK/ChangeLog Fri Dec 8 23:38:57 2006
@@ -1,3 +1,16 @@
+2006-12-08 Tomotaka SUWA <t.suw****@mac*****>
+
+ * NumericConverter.*: UTF-8 »BCppCFString ð std::string Éu·B
+
+ * KanjiConversionMode.cpp (convertNumeric): VKÇÁBCppCFString
+ Ì std::string Ï·ÈÇðsȤ[eBeBÖB
+
+ * AsciiConversionMode.cpp: convertNumeric ðg¤æ¤ÉÏXB
+
+ * Dictionary.h: SKK Ggð³µAūĢȢsïðC³B
+
+ * skkserv.cpp: óâ 0 Ì»èððC³B
+
2006-12-02 Tomotaka SUWA <t.suw****@mac*****>
* Dictionary.h: SKK «ìpÌ[eBeBNXðt@N^
Index: AquaSKK/Dictionary.h
diff -u AquaSKK/Dictionary.h:1.4.2.2 AquaSKK/Dictionary.h:1.4.2.3
--- AquaSKK/Dictionary.h:1.4.2.2 Sat Dec 2 16:54:13 2006
+++ AquaSKK/Dictionary.h Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/* -*- C++ -*-
- $Id: Dictionary.h,v 1.4.2.2 2006/12/02 07:54:13 t-suwa Exp $
+ $Id: Dictionary.h,v 1.4.2.3 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -78,7 +78,7 @@
template<typename T>
std::string operator()(const std::string& seed, const T& obj) const {
- return seed + delimiter_ + obj.Description();
+ return seed + obj.Description() + delimiter_;
}
};
@@ -89,7 +89,7 @@
template<typename T>
std::string operator()(const std::string& seed, const T& obj) const {
- return seed + delimiter_ + obj.Word();
+ return seed + obj.Word() + delimiter_;
}
};
@@ -509,24 +509,28 @@
std::string Candidate(char delimiter = '/') const {
std::string ret;
+
ret = std::accumulate(candidates_.begin(), candidates_.end(), ret, ConcatDescription(delimiter));
+ ret = std::accumulate(hints_.begin(), hints_.end(), ret, ConcatDescription(delimiter));
- if(hints_.empty()) {
- return ret + delimiter;
+ if(ret.empty()) {
+ ret = delimiter;
}
- return std::accumulate(hints_.begin(), hints_.end(), ret, ConcatDescription(delimiter)) + delimiter;
+ return delimiter + ret;
}
std::string Join(char delimiter = '/') const {
std::string ret;
+
ret = std::accumulate(candidates_.begin(), candidates_.end(), ret, ConcatWord(delimiter));
+ ret = std::accumulate(hints_.begin(), hints_.end(), ret, ConcatWord(delimiter));
- if(hints_.empty()) {
- return ret + delimiter;
+ if(ret.empty()) {
+ ret = delimiter;
}
- return std::accumulate(hints_.begin(), hints_.end(), ret, ConcatWord(delimiter)) + delimiter;
+ return delimiter + ret;
}
std::string Description() const {
Index: AquaSKK/DictionarySet.cpp
diff -u AquaSKK/DictionarySet.cpp:1.5.2.3 AquaSKK/DictionarySet.cpp:1.5.2.4
--- AquaSKK/DictionarySet.cpp:1.5.2.3 Sat Dec 2 16:54:13 2006
+++ AquaSKK/DictionarySet.cpp Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: DictionarySet.cpp,v 1.5.2.3 2006/12/02 07:54:13 t-suwa Exp $
+ $Id: DictionarySet.cpp,v 1.5.2.4 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -257,12 +257,8 @@
continue;
}
- // åè§£
- SKKEntry entry = SKKEntry::ParseOkuriNasi(key, result);
-
- for(SKKCandidate cand = entry.First(); !cand.IsEmpty(); cand = entry.Next()) {
- match.Add(cand);
- }
+ // 追å
+ match.Add(SKKEntry::ParseOkuriNasi(key, result));
}
return match.Join(result_delimiter);
Index: AquaSKK/Info-AquaSKKInputMethod.plist
diff -u AquaSKK/Info-AquaSKKInputMethod.plist:1.10.2.2 AquaSKK/Info-AquaSKKInputMethod.plist:1.10.2.3
--- AquaSKK/Info-AquaSKKInputMethod.plist:1.10.2.2 Tue Nov 28 23:36:08 2006
+++ AquaSKK/Info-AquaSKKInputMethod.plist Fri Dec 8 23:38:57 2006
@@ -19,11 +19,11 @@
<key>CFBundlePackageType</key>
<string>thng</string>
<key>CFBundleShortVersionString</key>
- <string>3.2 BETA</string>
+ <string>utf-8 1.1</string>
<key>CFBundleSignature</key>
<string>askk</string>
<key>CFBundleVersion</key>
- <string>2006-11-28</string>
+ <string>2006-12-09</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>tsInputMethodIconFileKey</key>
Index: AquaSKK/Info-AquaSKKServer.plist
diff -u AquaSKK/Info-AquaSKKServer.plist:1.10.2.2 AquaSKK/Info-AquaSKKServer.plist:1.10.2.3
--- AquaSKK/Info-AquaSKKServer.plist:1.10.2.2 Tue Nov 28 23:36:08 2006
+++ AquaSKK/Info-AquaSKKServer.plist Fri Dec 8 23:38:57 2006
@@ -19,11 +19,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>3.2 BETA</string>
+ <string>utf-8 1.1</string>
<key>CFBundleSignature</key>
<string>askk</string>
<key>CFBundleVersion</key>
- <string>2006-11-28</string>
+ <string>2006-12-09</string>
<key>NSMainNibFile</key>
<string>Principal</string>
<key>NSPrincipalClass</key>
Index: AquaSKK/KanjiConversionMode.cpp
diff -u AquaSKK/KanjiConversionMode.cpp:1.8.2.1 AquaSKK/KanjiConversionMode.cpp:1.8.2.2
--- AquaSKK/KanjiConversionMode.cpp:1.8.2.1 Sat Dec 2 16:54:13 2006
+++ AquaSKK/KanjiConversionMode.cpp Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: KanjiConversionMode.cpp,v 1.8.2.1 2006/12/02 07:54:13 t-suwa Exp $
+ $Id: KanjiConversionMode.cpp,v 1.8.2.2 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -407,11 +407,7 @@
sendCurrentCandidateToServerToRegister();
// mè
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- parent->fix(numconv_.Apply(candidates[current_candidate_index]));
- } else {
- parent->fix(candidates[current_candidate_index]);
- }
+ parent->fix(convertNumeric(numconv_, candidates[current_candidate_index]));
initialize();
return handleInput(skkchar); // ÄËü
@@ -475,11 +471,7 @@
sendCurrentCandidateToServerToRegister();
// §³êÈ¢ªA§IÉmè³¹éB
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- parent->fix(numconv_.Apply(candidates[current_candidate_index]));
- } else {
- parent->fix(candidates[current_candidate_index]);
- }
+ parent->fix(convertNumeric(numconv_, candidates[current_candidate_index]));
parent->setEnabledKanjiMode(false);
initialize();
@@ -584,10 +576,7 @@
else if (status == STATUS_BLACK) {
// »ÝÌóâðmèµÄ©çÅã̶ðíB
// »µÄú»µÄI¹B
- CppCFString str_to_fix(candidates[current_candidate_index]);
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- str_to_fix = numconv_.Apply(str_to_fix);
- }
+ CppCFString str_to_fix(convertNumeric(numconv_, candidates[current_candidate_index]));
str_to_fix.eraseLast(1);
// IÉM
@@ -693,11 +682,7 @@
sendCurrentCandidateToServerToRegister();
// »ÝÌóâðmèB
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- parent->fix(numconv_.Apply(candidates[current_candidate_index]));
- } else {
- parent->fix(candidates[current_candidate_index]);
- }
+ parent->fix(convertNumeric(numconv_, candidates[current_candidate_index]));
if (status == STATUS_BLACK_WITH_WINDOW) {
// EChEð¶éB
@@ -888,10 +873,7 @@
return CppCFString().append(0x25bd).append(root_to_display).append('*').append(okuri_to_display);
}
else if (status == STATUS_BLACK || status == STATUS_BLACK_WITH_WINDOW) {
- CppCFString str = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- str = numconv_.Apply(str);
- }
+ CppCFString str = convertNumeric(numconv_, candidates[current_candidate_index]);
// ¥»ÝÌóâ
return CppCFString().append(0x25bc).append(str);
}
@@ -913,19 +895,13 @@
result = root + okuri;
}
else if (status == STATUS_BLACK) {
- result = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- result = numconv_.Apply(candidates[current_candidate_index]);
- }
+ result = convertNumeric(numconv_, candidates[current_candidate_index]);
// IÉM
sendCurrentCandidateToServerToRegister();
}
else if (status == STATUS_BLACK_WITH_WINDOW) {
- result = candidates[current_candidate_index];
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- result = numconv_.Apply(result);
- }
+ result = convertNumeric(numconv_, candidates[current_candidate_index]);
// IÉM
sendCurrentCandidateToServerToRegister();
@@ -1018,11 +994,13 @@
}
// lÏ·ªLø©H
- if(!hasOkuri && ClientConfiguration::theInstance().useNumericConversion() && numconv_.Setup(root)) {
+ if(!hasOkuri && ClientConfiguration::theInstance().useNumericConversion() &&
+ numconv_.Setup(root.toStdString(kCFStringEncodingUTF8))) {
+ CppCFString normalized(numconv_.NormalizedKey().c_str(), kCFStringEncodingUTF8);
std::vector<CppCFString> result;
CppCFData cfdata;
- cfdata.own(CppCFString().append('-').append(numconv_.NormalizedKey()).toCFData());
+ cfdata.own(CppCFString().append('-').append(normalized).toCFData());
::askServerTheCandidates(cfdata, result);
@@ -1110,10 +1088,11 @@
CppCFString str;
NumericConverter conv;
- if(ClientConfiguration::theInstance().useNumericConversion() && conv.Setup(index)) {
- CppCFString applied = conv.Apply(kanji);
+ if(ClientConfiguration::theInstance().useNumericConversion() &&
+ conv.Setup(index.toStdString(kCFStringEncodingUTF8))) {
+ CppCFString applied(convertNumeric(conv, kanji));
if(applied != kanji) {
- str = conv.NormalizedKey();
+ str = CppCFString(conv.NormalizedKey().c_str(), kCFStringEncodingUTF8);
} else {
str = index;
}
@@ -1137,11 +1116,7 @@
} else {
for(std::vector<CppCFString>::const_iterator ite = candidates.begin() + (show_cands_window_after_Nth_cand - 1);
ite != candidates.end(); ++ ite) {
- if(ClientConfiguration::theInstance().useNumericConversion()) {
- cands_without_okuri.push_back(numconv_.Apply(*ite));
- } else {
- cands_without_okuri.push_back(*ite);
- }
+ cands_without_okuri.push_back(convertNumeric(numconv_, *ite));
}
}
@@ -1250,7 +1225,7 @@
std::set<CppCFString> check;
std::vector<CppCFString> result;
- check.insert(numconv.OriginalKey());
+ check.insert(CppCFString(numconv.OriginalKey().c_str(), kCFStringEncodingUTF8));
// õ
for(std::vector<CppCFString>::iterator iter = master.begin(); iter != master.end(); ++ iter) {
@@ -1262,7 +1237,7 @@
// }[W
for(std::vector<CppCFString>::iterator iter = cands.begin(); iter != cands.end(); ++ iter) {
- CppCFString target(numconv.Apply(*iter));
+ CppCFString target(convertNumeric(numconv, *iter));
if(check.find(target) != check.end()) continue;
check.insert(check.lower_bound(target), target);
@@ -1270,3 +1245,13 @@
}
result.swap(master);
}
+
+CppCFString convertNumeric(const NumericConverter& numconv, const CppCFString& candidate) {
+ if(!ClientConfiguration::theInstance().useNumericConversion()) {
+ return candidate;
+ }
+
+ std::string result(numconv.Apply(candidate.toStdString(kCFStringEncodingUTF8)));
+
+ return CppCFString(result.c_str(), kCFStringEncodingUTF8);
+}
Index: AquaSKK/KanjiConversionMode.h
diff -u AquaSKK/KanjiConversionMode.h:1.6 AquaSKK/KanjiConversionMode.h:1.6.2.1
--- AquaSKK/KanjiConversionMode.h:1.6 Mon Jun 12 23:14:48 2006
+++ AquaSKK/KanjiConversionMode.h Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: KanjiConversionMode.h,v 1.6 2006/06/12 14:14:48 t-suwa Exp $
+ $Id: KanjiConversionMode.h,v 1.6.2.1 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -122,5 +122,6 @@
CppCFData newCFDataRefWithWindowID(unsigned window_id);
void mergeCandidates(const NumericConverter& numconv,
std::vector<CppCFString>& master, std::vector<CppCFString>& cands);
+CppCFString convertNumeric(const NumericConverter& numconv, const CppCFString& candidate);
#endif // INC__KanjiConversionMode__
Index: AquaSKK/NumericConverter.cpp
diff -u AquaSKK/NumericConverter.cpp:1.3 AquaSKK/NumericConverter.cpp:1.3.2.1
--- AquaSKK/NumericConverter.cpp:1.3 Sat Jul 1 08:44:30 2006
+++ AquaSKK/NumericConverter.cpp Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: NumericConverter.cpp,v 1.3 2006/06/30 23:44:30 t-suwa Exp $
+ $Id: NumericConverter.cpp,v 1.3.2.1 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -23,56 +23,86 @@
#include "NumericConverter.h"
// ======================================================================
-// 数値変換を実装するユーティリティ関数
+// æ°å¤å¤æãå®è£
ããã¦ã¼ãã£ãªãã£é¢æ°
// ======================================================================
-// 1024 → 1024
+// 1024 â ï¼ï¼ï¼ï¼
std::string ConvertType1(const std::string& src) {
std::string result;
for(unsigned i = 0; i < src.size(); ++ i) {
- result += 0xa3;
- result += (src[i] + 0x80);
+ switch(src[i]) {
+ case '0':
+ result += "ï¼";
+ break;
+ case '1':
+ result += "ï¼";
+ break;
+ case '2':
+ result += "ï¼";
+ break;
+ case '3':
+ result += "ï¼";
+ break;
+ case '4':
+ result += "ï¼";
+ break;
+ case '5':
+ result += "ï¼";
+ break;
+ case '6':
+ result += "ï¼";
+ break;
+ case '7':
+ result += "ï¼";
+ break;
+ case '8':
+ result += "ï¼";
+ break;
+ case '9':
+ result += "ï¼";
+ break;
+ }
}
return result;
}
-// 1024 → 一〇二四
+// 1024 â ä¸ãäºå
std::string ConvertType2(const std::string& src) {
std::string result;
for(unsigned i = 0; i < src.size(); ++ i) {
switch(src[i]) {
case '0':
- result += "〇";
+ result += "ã";
break;
case '1':
- result += "一";
+ result += "ä¸";
break;
case '2':
- result += "二";
+ result += "äº";
break;
case '3':
- result += "三";
+ result += "ä¸";
break;
case '4':
- result += "四";
+ result += "å";
break;
case '5':
- result += "五";
+ result += "äº";
break;
case '6':
- result += "六";
+ result += "å
";
break;
case '7':
- result += "七";
+ result += "ä¸";
break;
case '8':
- result += "八";
+ result += "å
«";
break;
case '9':
- result += "九";
+ result += "ä¹";
break;
}
}
@@ -80,66 +110,66 @@
return result;
}
-// 1024 → 千二十四
+// 1024 â åäºåå
std::string ConvertType3(const std::string& src) {
- const char* unit1[] = { "", "万", "億", "兆", "京", "垓" };
- const char* unit2[] = { "十", "百", "千" };
+ const char* unit1[] = { "", "ä¸", "å", "å
", "京", "å" };
+ const char* unit2[] = { "å", "ç¾", "å" };
std::string result;
if(src.size() == 1 && src[0] == '0') {
- return "〇";
+ return "ã";
}
for(unsigned i = src.find_first_not_of("0"); i < src.size(); ++ i) {
switch(src[i]) {
case '2':
- result += "二";
+ result += "äº";
break;
case '3':
- result += "三";
+ result += "ä¸";
break;
case '4':
- result += "四";
+ result += "å";
break;
case '5':
- result += "五";
+ result += "äº";
break;
case '6':
- result += "六";
+ result += "å
";
break;
case '7':
- result += "七";
+ result += "ä¸";
break;
case '8':
- result += "八";
+ result += "å
«";
break;
case '9':
- result += "九";
+ result += "ä¹";
break;
}
int distance = src.size() - i;
- // 「十、百、千」以外の位
+ // ãåãç¾ãåã以å¤ã®ä½
if(distance > 4 && (distance - 1) % 4 == 0) {
if(src[i] == '1') {
- result += "一";
+ result += "ä¸";
}
result += unit1[(distance - 1) / 4];
} else {
- // 十の位以上
+ // åã®ä½ä»¥ä¸
if(distance > 1) {
if(src[i] != '0') {
- // 「一千万」の処理
+ // ãä¸åä¸ãã®å¦ç
if(src[i] == '1' && distance > 4 && (distance - 2) % 4 == 2) {
- result += "一";
+ result += "ä¸";
}
result += unit2[(distance - 2) % 4];
}
} else {
- // 一の位
+ // ä¸ã®ä½
if(src[i] == '1') {
- result += "一";
+ result += "ä¸";
}
}
}
@@ -148,59 +178,59 @@
return result;
}
-// 数値再変換(AquaSKK では無視)
+// æ°å¤å夿(AquaSKK ã§ã¯ç¡è¦)
std::string ConvertType4(const std::string& src) {
return src;
}
-// 1024 → 壱阡弐拾四
+// 1024 â 壱é¡å¼æ¾å
std::string ConvertType5(const std::string& src) {
- const char* unit1[] = { "", "萬", "億", "兆", "京", "垓" };
- const char* unit2[] = { "拾", "百", "阡" };
+ const char* unit1[] = { "", "è¬", "å", "å
", "京", "å" };
+ const char* unit2[] = { "æ¾", "ç¾", "é¡" };
std::string result;
if(src.size() == 1 && src[0] == '0') {
- return "零";
+ return "é¶";
}
for(unsigned i = src.find_first_not_of("0"); i < src.size(); ++ i) {
switch(src[i]) {
case '1':
- result += "壱";
+ result += "壱";
break;
case '2':
- result += "弐";
+ result += "å¼";
break;
case '3':
- result += "参";
+ result += "å";
break;
case '4':
- result += "四";
+ result += "å";
break;
case '5':
- result += "伍";
+ result += "ä¼";
break;
case '6':
- result += "六";
+ result += "å
";
break;
case '7':
- result += "七";
+ result += "ä¸";
break;
case '8':
- result += "八";
+ result += "å
«";
break;
case '9':
- result += "九";
+ result += "ä¹";
break;
}
int distance = src.size() - i;
- // 「十、百、千」以外の位
+ // ãåãç¾ãåã以å¤ã®ä½
if(distance > 4 && (distance - 1) % 4 == 0) {
result += unit1[(distance - 1) / 4];
} else {
- // 十の位以上
+ // åã®ä½ä»¥ä¸
if(distance > 1) {
if(src[i] != '0') {
result += unit2[(distance - 2) % 4];
@@ -212,25 +242,25 @@
return result;
}
-// 34 → 3四
+// 34 â ï¼å
std::string ConvertType9(const std::string& src) {
return ConvertType1(src.substr(0, 1)) + ConvertType2(src.substr(1, 1));
}
// ======================================================================
-// クラスインタフェース
+// ã¯ã©ã¹ã¤ã³ã¿ãã§ã¼ã¹
// ======================================================================
-// 検索キーの正規化
-bool NumericConverter::Setup(const CppCFString& query) {
+// æ¤ç´¢ãã¼ã®æ£è¦å
+bool NumericConverter::Setup(const std::string& query) {
params_.clear();
original_ = query;
const char* numbers = "0123456789";
- std::string src(query.toStdString());
+ std::string src(query);
std::string::size_type from = src.find_first_of(numbers);
- // 連続した数値を見つけたら vector に格納し、"#" に正規化
+ // é£ç¶ããæ°å¤ãè¦ã¤ããã vector ã«æ ¼ç´ãã"#" ã«æ£è¦å
while(from != std::string::npos) {
std::string::size_type to = src.find_first_not_of(numbers, from);
params_.push_back(src.substr(from, to - from));
@@ -239,30 +269,30 @@
from = src.find_first_of(numbers, to);
}
- normalized_ = CppCFString(src.c_str(), kCFStringEncodingEUC_JP);
+ normalized_ = src;
return !params_.empty();
}
-// オリジナルのキー
-CppCFString NumericConverter::OriginalKey() const {
+// ãªãªã¸ãã«ã®ãã¼
+const std::string& NumericConverter::OriginalKey() const {
return original_;
}
-// 正規化されたキー
-CppCFString NumericConverter::NormalizedKey() const {
+// æ£è¦åããããã¼
+const std::string& NumericConverter::NormalizedKey() const {
if(params_.empty()) return original_;
return normalized_;
}
-// 数値変換を適用する
-CppCFString NumericConverter::Apply(const CppCFString& candidate) const {
+// æ°å¤å¤æãé©ç¨ãã
+std::string NumericConverter::Apply(const std::string& candidate) const {
if(params_.empty()) return candidate;
const char* numbers = "0123459";
std::string result;
- std::string src(candidate.toStdString());
+ std::string src(candidate);
std::string::size_type pos = 0;
int index = 0;
@@ -270,25 +300,25 @@
pos = src.find_first_of(numbers, pos + 1);
if(src[pos - 1] == '#') {
switch(src[pos]) {
- case '0': // 無変換
+ case '0': // ç¡å¤æ
src.replace(pos - 1, 2, params_[index]);
break;
- case '1': // 半角→全角変換
+ case '1': // åè§âå
¨è§å¤æ
src.replace(pos - 1, 2, ConvertType1(params_[index]));
break;
- case '2': // 漢数字位取りなし
+ case '2': // æ¼¢æ°åä½åããªã
src.replace(pos - 1, 2, ConvertType2(params_[index]));
break;
- case '3': // 漢数字位取りあり
+ case '3': // æ¼¢æ°åä½åããã
src.replace(pos - 1, 2, ConvertType3(params_[index]));
break;
- case '4': // 数値再変換(AquaSKK では無変換)
+ case '4': // æ°å¤å夿(AquaSKK ã§ã¯ç¡å¤æ)
src.replace(pos - 1, 2, ConvertType4(params_[index]));
break;
- case '5': // 小切手・手形
+ case '5': // å°åæã»æå½¢
src.replace(pos - 1, 2, ConvertType5(params_[index]));
break;
- case '9': // 棋譜入力用
+ case '9': // æ£èå
¥åç¨
src.replace(pos - 1, 2, ConvertType9(params_[index]));
break;
}
@@ -297,5 +327,5 @@
}
} while(pos != std::string::npos);
- return CppCFString(src.c_str(), kCFStringEncodingEUC_JP);
+ return src;
}
Index: AquaSKK/NumericConverter.h
diff -u AquaSKK/NumericConverter.h:1.1 AquaSKK/NumericConverter.h:1.1.2.1
--- AquaSKK/NumericConverter.h:1.1 Sat Jun 3 10:23:18 2006
+++ AquaSKK/NumericConverter.h Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/* -*- c++ -*-
- $Id: NumericConverter.h,v 1.1 2006/06/03 01:23:18 t-suwa Exp $
+ $Id: NumericConverter.h,v 1.1.2.1 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -25,21 +25,20 @@
#include <vector>
#include <string>
-#include "CppCFString.h"
-// 数値変換をサポートするユーティリティ
+// æ°å¤å¤æç¨ã¦ã¼ãã£ãªãã£ã¯ã©ã¹
class NumericConverter {
- CppCFString original_;
- CppCFString normalized_;
+ std::string original_;
+ std::string normalized_;
std::vector<std::string> params_;
public:
- bool Setup(const CppCFString& query);
+ bool Setup(const std::string& query);
- CppCFString OriginalKey() const;
- CppCFString NormalizedKey() const;
- CppCFString Apply(const CppCFString& candidate) const;
+ const std::string& OriginalKey() const;
+ const std::string& NormalizedKey() const;
+ std::string Apply(const std::string& candidate) const;
};
#endif // INC__NumericConverter__
Index: AquaSKK/skkserv.cpp
diff -u AquaSKK/skkserv.cpp:1.3.2.2 AquaSKK/skkserv.cpp:1.3.2.3
--- AquaSKK/skkserv.cpp:1.3.2.2 Sat Dec 2 16:54:13 2006
+++ AquaSKK/skkserv.cpp Fri Dec 8 23:38:57 2006
@@ -1,5 +1,5 @@
/*
- $Id: skkserv.cpp,v 1.3.2.2 2006/12/02 07:54:13 t-suwa Exp $
+ $Id: skkserv.cpp,v 1.3.2.3 2006/12/08 14:38:57 t-suwa Exp $
MacOS X implementation of the SKK input method.
@@ -111,7 +111,7 @@
}
// è¦ã¤ãã£ãï¼
- if(!result.empty()) {
+ if(result != "//") {
std::string candidates;
jconv::convert_utf8_to_eucj(result, candidates);
sock << "1" << candidates << "\n";