Skip to content

Commit

Permalink
Address translit of ieung, rieul
Browse files Browse the repository at this point in the history
  • Loading branch information
mooniker committed Sep 13, 2019
1 parent 01c6bb8 commit 0ce31a5
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 32 deletions.
3 changes: 3 additions & 0 deletions jamo.js
@@ -1,3 +1,4 @@
// choseong
const initialConsonants = [
"ㄱ", // 0
"ㄲ",
Expand All @@ -20,6 +21,7 @@ const initialConsonants = [
"ㅎ"
];

// jungseong
const medialVowels = [
"ㅏ",
"ㅐ",
Expand All @@ -44,6 +46,7 @@ const medialVowels = [
"ㅣ"
];

// jongseong
const finalConsonants = [
null,
"ㄱ",
Expand Down
49 changes: 27 additions & 22 deletions jamo.rr.js
@@ -1,55 +1,60 @@
module.exports = {
// simple vowels
: { rr: "a" },
: { rr: "eo" },
: { rr: "o" },
: { rr: "a", mr: "a" },
: { rr: "eo", mr: "ŏ" },
: { rr: "o", mr: "o" },
: { rr: "u" },
: { rr: "eu" },
: { rr: "eu", mr: "ŭ" },
: { rr: "i" },
: { rr: "ae" },
: { rr: "e" },
: { rr: "ae", mr: "ae" },
: { rr: "e", mr: "e" },
: { rr: "oe" },
: { rr: "w" },
// Diphtongs
: { rr: "ya" },
: { rr: "yeo" },
: { rr: "ya", mr: "ya" },
: { rr: "yeo", mr: "yŏ" },
: { rr: "yo" },
: { rr: "yu" },
: { rr: "yae" },
: { rr: "ye" },
: { rr: "yae", mr: "yae" },
: { rr: "ye", mr: "ye" },
: { rr: "wa" },
: { rr: "wae" },
: { rr: "wi" },
: { rr: "wo" },
: { rr: "wo", mr: "wŏ" },
: { rr: "we" },
: { rr: "ui" },
: { rr: "ui", mr: "ŭi" },
// Plosives (stops)
// ㄱ: { rr: ["g", "k"] },
: { rr: "g" },
: { rr: "kk" },
: { rr: ["g", "k"], mr: "k" },
// ㄱ: { rr: "g" },
: { rr: ["kk", "k"] },
// ㄲ: { rr: "kk" },
: { rr: "k" },
// ㄷ: { rr: ["d", "t"] },
: { rr: "d" },
: { rr: ["d", "t"] },
// ㄷ: { rr: "d" },
// ㄸ: { rr: ["tt", '-'] },
: { rr: "tt" },
: { rr: "t" },
// ㅂ: { rr: ["b", "p"] },
: { rr: "b" },
: { rr: ["b", "p"] },
// ㅂ: { rr: "b" },
: { rr: "pp" },
: { rr: "p" },
// Affricates
: { rr: "j" },
: { rr: "jj" },
: { rr: "ch" },
: { rr: ["ch", "t"] },
// ㅊ: { rr: "ch" },
// Fricatives
: { rr: "s" },
: { rr: "ss" },
: { rr: "h" },
// Nasals
: { rr: "n" },
: { rr: "m" },
: { rr: "/ng" },
: { rr: [null, "ng"] },
// ㅇ: { rr: "/ng" },
// Liquids
: { rr: "r/l" },
: { rr: ["r", "l"] },
// ㄹ: { rr: "r/l" },
// composite jamo
: { rr: "lg" }
};
4 changes: 4 additions & 0 deletions translations.js
Expand Up @@ -186,5 +186,9 @@ module.exports = {
rrt: "Jo-seon Min-ju-ju-ui In-min Gong-hwa-gug",
ck: "Чосон Минчучуыи Инмин Конъхвакук",
ckr: "Choson Minchuchu'i Inmin Kon'hvakuk"
},
훈민정음: {
rr: "Hunminjeong'eum",
rrt: "Hun-min-jeong-eum"
}
};
25 changes: 15 additions & 10 deletions translit.js
Expand Up @@ -9,12 +9,21 @@ const toRomaja = char => {
return decomposeSyllable(char)
.map((jamo, idx) => {
try {
const geulja = rr[jamo].rr;
if (geulja.includes("/")) {
const [jamo1, batchim] = geulja.split("/");
return idx === 0 ? jamo1 : batchim;
const jamoDict = rr[jamo].rr;
if (Array.isArray(jamoDict)) {
const [choseong, jongseong] = jamoDict;
// return idx === 0 ? choseong : jongseong;
if (idx === 2 && !choseong) {
return jongseong;
}
// exception to conform to test cases
// TODO confirm test cases are accurate transliterations
if (idx === 2 && jamo === "ㄹ") {
return jongseong;
}
return choseong;
}
return geulja;
return jamoDict;
} catch (e) {
console.error("Jamo", jamo, e);
}
Expand All @@ -25,11 +34,7 @@ const toRomaja = char => {
const translit = text => {
return text
.split("")
.map(char => {
// console.log(isHangul(char));
// console.log(char.charCodeAt(0), char.charCodeAt(0) > START);
return isHangul(char) ? toRomaja(char) : char;
})
.map(char => (isHangul(char) ? toRomaja(char) : char))
.join("");
};

Expand Down

0 comments on commit 0ce31a5

Please sign in to comment.