diff options
author | Philipp Reh <sefi@s-e-f-i.de> | 2009-02-21 11:41:22 +0100 |
---|---|---|
committer | Philipp Reh <sefi@s-e-f-i.de> | 2009-02-21 11:41:22 +0100 |
commit | 9e3b934d2e71d01c94ff1510d96b79540539a879 (patch) | |
tree | c2efb542efe65db64ba9e04f7cdd46f3f9a665bf /kana2romaji.cpp | |
parent | 9c1724988dca676620a8b6b7326bf649c65422c6 (diff) |
Go back in the kana2romaji loop so we don't miss characters.
Diffstat (limited to 'kana2romaji.cpp')
-rw-r--r-- | kana2romaji.cpp | 34 |
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; + } } } |