summaryrefslogtreecommitdiff
path: root/kana2romaji.cpp
diff options
context:
space:
mode:
authornille <nmeyering@gmail.com>2009-02-21 14:41:03 +0100
committernille <nmeyering@gmail.com>2009-02-21 14:41:03 +0100
commitb57bdd6a96e07c3871a86e928f6cf7b40d3d0880 (patch)
tree0fdffd5d799b1886c7400413081a48e6634eeacb /kana2romaji.cpp
parentad579827af1a7b027f7991efe2f27fd80c4244db (diff)
parented9639977caa958ffd6008dfe14fa3b1795368ce (diff)
Merge branch 'master' of git://timeoutd.org/jmdict
Diffstat (limited to 'kana2romaji.cpp')
-rw-r--r--kana2romaji.cpp68
1 files changed, 37 insertions, 31 deletions
diff --git a/kana2romaji.cpp b/kana2romaji.cpp
index 931c09a..a51b7ec 100644
--- a/kana2romaji.cpp
+++ b/kana2romaji.cpp
@@ -218,7 +218,7 @@ void initRomaji() {
romaji["プ"] = "pu";
romaji["ペ"] = "pe";
romaji["ポ"] = "po";
- romaji["ー"] = "";
+ romaji["・"] = " ";
// -- double width letters ------
romaji["A"] = "A";
@@ -292,9 +292,7 @@ void initRomaji() {
romaji["$"] = "$";
romaji["%"] = "%";
romaji["&"] = "&";
- romaji["'"] = "'"; // TODO:
- romaji["("] = "(";
- romaji[")"] = ")";
+ romaji["'"] = "'";
romaji["*"] = "*";
romaji["+"] = "+";
romaji[","] = ",";
@@ -310,27 +308,29 @@ void initRomaji() {
romaji["?"] = "?";
romaji["@"] = "@";
+ romaji["〔"] = "(";
+ romaji["〕"] = ")";
+ romaji["("] = "(";
+ romaji[")"] = ")";
romaji["["] = "[";
- romaji["\"] = "\\";
romaji["]"] = "]";
+ romaji["【"] = "[";
+ romaji["】"] = "]";
+ romaji["{"] = "{";
+ romaji["}"] = "}";
+ romaji["\"] = "\\";
romaji["^"] = "^";
romaji["_"] = "_";
romaji["`"] = "`";
-
- romaji["{"] = "{";
romaji["|"] = "|";
- romaji["}"] = "}";
romaji["~"] = "~";
-
-
- // don't know where those belong to
+ romaji["ー"] = "-";
+ romaji["。"] = ".";
+ romaji["、"] = ",";
romaji["〜"] = "~";
- romaji["、"] = ","; // TODO:
romaji["−"] = "-";
-
- romaji[" "] = " ";
romaji["―"] = "-";
- romaji["・"] = "-"; // FIXME
+ romaji[" "] = " ";
}
void remove_quote_1(
@@ -375,7 +375,7 @@ void kana2romaji(const string& kana, string& rom) {
pred == "dzi"
) {
remove_quote_1(pos, rom);
- continue;
+ pos -= 2;
}
}
else if (pos > 1) {
@@ -395,33 +395,39 @@ void kana2romaji(const string& kana, string& rom) {
// shorten "ji\1y" to "j"
// otherwise remove "\1" and the preceding character
// but not the y
- rom.erase(
- pos - 1,
- (pos + 1 < rom.size()
- && rom[pos + 1] == 'y'
- && pred[0] == 'j')
- ? 3
- : 2);
-
- continue;
+ rom.erase(
+ pos - 1,
+ (pos + 1 < rom.size()
+ && rom[pos + 1] == 'y'
+ && pred[0] == 'j')
+ ? 3
+ : 2);
+ pos -= 2;
}
-
- if(pred == "fu" ||
+ else if(
+ pred == "fu" ||
pred == "de" ||
pred == "te" ||
pred == "vu")
{
remove_quote_1(pos, rom);
- continue;
+ pos -= 2;
}
}
else
{
- cout << "Encountered a placeholder at the beginning. Just removing it." << endl;
rom.erase(pos);
+ --pos;
}
}
- // FIXME!
- else if (rom[pos] == '\2' && pos + 1 < rom.size())
+ else if (rom[pos] == '\2')
+ {
+ if(pos + 1 < rom.size())
rom[pos] = rom[pos + 1];
+ else
+ {
+ rom.erase(pos);
+ --pos;
+ }
+ }
}