projects
/
jmdict-cli.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
672c228
)
Commented the code.
author
Philipp Reh
<sefi@s-e-f-i.de>
Fri, 20 Feb 2009 17:52:55 +0000
(18:52 +0100)
committer
Philipp Reh
<sefi@s-e-f-i.de>
Fri, 20 Feb 2009 17:52:55 +0000
(18:52 +0100)
kana2romaji.cpp
patch
|
blob
|
history
diff --git
a/kana2romaji.cpp
b/kana2romaji.cpp
index b02562f1ebf70b34bd277fcd03b137e90f88a44e..43a2d402a106bbe20c4abd2ec65fe607eafda2c3 100644
(file)
--- a/
kana2romaji.cpp
+++ b/
kana2romaji.cpp
@@
-333,6
+333,23
@@
void initRomaji() {
romaji["・"] = "-"; // FIXME
}
romaji["・"] = "-"; // FIXME
}
+void remove_quote_1(
+ string::size_type const pos,
+ string &rom)
+{
+ // if we encounter something like
+ // "ki" + '\1'
+ // remove the previous character of \1 and the \1
+ // if \1 is followed by an 'y' remove that also
+ rom.erase(
+ pos - 1,
+ (pos + 1 < rom.size()
+ && rom[pos + 1] == 'y'
+ )
+ ? 3
+ : 2);
+}
+
void kana2romaji(const string& kana, string& rom) {
rom.clear();
for (string::size_type pos = 0; pos < kana.size(); ) {
void kana2romaji(const string& kana, string& rom) {
rom.clear();
for (string::size_type pos = 0; pos < kana.size(); ) {
@@
-350,7
+367,6
@@
void kana2romaji(const string& kana, string& rom) {
}
for (string::size_type pos = 0; pos < rom.size(); ++pos)
if (rom[pos] == '\1') {
}
for (string::size_type pos = 0; pos < rom.size(); ++pos)
if (rom[pos] == '\1') {
- string::size_type count = 1;
if (pos > 2) {
string const pred = rom.substr(pos - 3, 3);
if (pos > 2) {
string const pred = rom.substr(pos - 3, 3);
@@
-358,12
+374,11
@@
void kana2romaji(const string& kana, string& rom) {
pred == "shi" ||
pred == "dzi"
) {
pred == "shi" ||
pred == "dzi"
) {
- count = (pos + 1 < rom.size() && rom[pos + 1] == 'y') ? 3 : 2;
- rom.erase(pos - 1, count);
+ remove_quote_1(pos, rom);
continue;
}
}
continue;
}
}
- if (pos > 1) {
+
else
if (pos > 1) {
string const pred = rom.substr(pos - 2, 2);
if(pred == "ki" ||
string const pred = rom.substr(pos - 2, 2);
if(pred == "ki" ||
@@
-376,22
+391,31
@@
void kana2romaji(const string& kana, string& rom) {
pred == "pi"
)
{
pred == "pi"
)
{
- count = (pos + 1 < rom.size() && rom[pos + 1] == 'y' && pred[0] == 'j') ? 3 : 2;
- rom.erase(pos - 1, count);
+ // 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;
}
continue;
}
-
- if(pred == "fu" ||
- pred == "de" ||
- pred == "te" ||
- pred == "vu")
- {
- count = (pos + 1 < rom.size() && rom[pos + 1] == 'y') ? 3 : 2;
- rom.erase(pos - 1, count);
+
+ if(pred == "fu" ||
+ pred == "de" ||
+ pred == "te" ||
+ pred == "vu")
+ {
+ remove_quote_1(pos, rom);
continue;
continue;
-
}
+ }
}
}
}
}
+ // FIXME!
else if (rom[pos] == '\2' && pos + 1 < rom.size())
rom[pos] = rom[pos + 1];
}
else if (rom[pos] == '\2' && pos + 1 < rom.size())
rom[pos] = rom[pos + 1];
}