qwerty-dubeolsik
Version:
⌨ This library allows you to easily convert Korean keys to English or English keys to Korean on a QWERTY keyboard.
2 lines (1 loc) • 3.44 kB
JavaScript
var j={\u1107:"\u3142",\u110C:"\u3148",\u1103:"\u3137",\u1100:"\u3131",\u1109:"\u3145",\u116D:"\u315B",\u1167:"\u3155",\u1163:"\u3151",\u1162:"\u3150",\u1166:"\u3154",\u1106:"\u3141",\u1102:"\u3134",\u110B:"\u3147",\u1105:"\u3139",\u1112:"\u314E",\u1169:"\u3157",\u1165:"\u3153",\u1161:"\u314F",\u1175:"\u3163",\u110F:"\u314B",\u1110:"\u314C",\u110E:"\u314A",\u1111:"\u314D",\u1172:"\u3160",\u116E:"\u315C",\u1173:"\u3161",\u1108:"\u3143",\u110D:"\u3149",\u1104:"\u3138",\u1101:"\u3132",\u110A:"\u3146",\u1164:"\u3152",\u1168:"\u3156",\u116A:"\u3158",\u116B:"\u3159",\u116C:"\u315A",\u116F:"\u315D",\u1170:"\u315E",\u1171:"\u315F",\u1174:"\u3162",\u11A8:"\u3131",\u11A9:"\u3132",\u11AB:"\u3134",\u11AE:"\u3137",\u11AF:"\u3139",\u11B7:"\u3141",\u11B8:"\u3142",\u11BA:"\u3145",\u11BB:"\u3146",\u11BC:"\u3147",\u11C2:"\u314E",\u11BD:"\u3148",\u11BE:"\u314A",\u11BF:"\u314B",\u11C0:"\u314A",\u11C1:"\u314D",\u3138:"\u3138",\u3149:"\u3149"},l={q:"\u1107",w:"\u110C",e:"\u1103",r:"\u1100",t:"\u1109",y:"\u116D",u:"\u1167",i:"\u1163",o:"\u1162",p:"\u1166",a:"\u1106",s:"\u1102",d:"\u110B",f:"\u1105",g:"\u1112",h:"\u1169",j:"\u1165",k:"\u1161",l:"\u1175",z:"\u110F",x:"\u1110",c:"\u110E",v:"\u1111",b:"\u1172",n:"\u116E",m:"\u1173",Q:"\u1108",W:"\u110D",E:"\u1104",R:"\u1101",T:"\u110A",O:"\u1164",P:"\u1168"},u=Object.entries(l).reduce((s,[t,i])=>(s[i]=t,s),{}),g={\u11A8:"\u1100",\u11A9:"\u1101",\u11AB:"\u1102",\u11AE:"\u1103",\u11AF:"\u1105",\u11B7:"\u1106",\u11B8:"\u1107",\u11BA:"\u1109",\u11BB:"\u110A",\u11BC:"\u110B",\u1112:"\u11C2",\u11BD:"\u110C",\u11BE:"\u110E",\u11BF:"\u110F",\u11C0:"\u1110",\u11C1:"\u1111",\u3138:"\u1104",\u3149:"\u110D",\u1108:""},x=Object.entries(g).reduce((s,[t,i])=>(s[i]=t,s),{}),m={\u1100\u1109:"\u11B3",\u1102\u110C:"\u11AC",\u1102\u1112:"\u11AD",\u1105\u1100:"\u11B0",\u1105\u1106:"\u11B1",\u1105\u1107:"\u11B2",\u1105\u1109:"\u11B3",\u1105\u1110:"\u11B4",\u1105\u1111:"\u11B5",\u1105\u1112:"\u11B6",\u1107\u1109:"\u11B9"},R=Object.entries(m).reduce((s,[t,i])=>(s[i]=t,s),{}),y={\u1169\u1161:"\u116A",\u1169\u1162:"\u116B",\u1169\u1175:"\u116C",\u116E\u1165:"\u116F",\u116E\u1166:"\u1170",\u116E\u1175:"\u1171",\u1173\u1175:"\u1174"},f=Object.entries(y).reduce((s,[t,i])=>(s[i]=t,s),{}),d=s=>s in x||s in g,C=s=>s in l?l[s]:s.toLowerCase()in l?l[s.toLowerCase()]:s.toUpperCase()in l?l[s.toUpperCase()]:s,v=s=>{let t=[];for(let n=0;n<s.length;n+=1){let K=s[n],e=!1,r=!1;if(n>0){let a=s[n-1],p=C(a);e=d(p)}if(s.length-1!==n){let a=s[n+1],p=C(a);r=d(p)}let o=C(K),c=d(o);if(c===!1&&r===!1&&s.length-1>n){let a=s[n+1],p=C(a),h=y[o+p];h?(t.push(h),n+=1):t.push(o)}else if(e===!1&&c&&r&&n>0){let a=s[n+1],p=C(a),h=m[o+p];h?(t.push(h),n+=1):t.push(x[o]||o)}else n===s.length-1&&c?t.push(x[o]||o):t.push(o)}return[...t.join("").normalize("NFC")].map(n=>j[n]||n).join("")},E=s=>{let t=[],i=s.normalize("NFKD").split(""),n=[];i.forEach(e=>{e in f?f[e].split("").forEach(r=>{n.push(r)}):n.push(e)});for(let e=0;e<n.length;e+=1){let r=n[e];if(r in u)t.push(u[r]);else if(r in g){let o=g[r];t.push(u[o])}else if(r in R){let[o,c]=R[r].split("");t.push(u[o]),t.push(u[c])}else if(r in f){let[o,c]=f[r].split("");t.push(u[o]),t.push(u[c])}else t.push(r)}return[...t.join("").normalize("NFC")].map(e=>j[e]||e).join("")};export{d as checkConsonant,C as convertEngKeyToKorKey,v as convertEngToKor,E as convertKorToEng,x as finalConsonants,g as initialConsonants,u as qwertyEngKeys,l as qwertyKorKeys,j as unicodeKoreanChars};