summaryrefslogtreecommitdiff
path: root/kana2romaji.cpp
diff options
context:
space:
mode:
authorPhilipp Reh <sefi@s-e-f-i.de>2009-02-21 11:41:22 +0100
committerPhilipp Reh <sefi@s-e-f-i.de>2009-02-21 11:41:22 +0100
commit9e3b934d2e71d01c94ff1510d96b79540539a879 (patch)
treec2efb542efe65db64ba9e04f7cdd46f3f9a665bf /kana2romaji.cpp
parent9c1724988dca676620a8b6b7326bf649c65422c6 (diff)
Go back in the kana2romaji loop so we don't miss characters.
Diffstat (limited to 'kana2romaji.cpp')
-rw-r--r--kana2romaji.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/kana2romaji.cpp b/kana2romaji.cpp
index 01124fd..d0da9f3 100644
--- a/kana2romaji.cpp
+++ b/kana2romaji.cpp
@@ -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,37 +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
{
rom.erase(pos);
+ --pos;
}
}
- // FIXME!
else if (rom[pos] == '\2')
- {
+ {
if(pos + 1 < rom.size())
rom[pos] = rom[pos + 1];
- else
+ else
+ {
rom.erase(pos);
+ --pos;
+ }
}
}