seaball-converter
Version:
Converts mistakenly typed Korean (in English keyboard layout) into proper Hangul.
33 lines (32 loc) • 1.15 kB
JavaScript
/**
* PATH: /src/index.ts
*/
import * as Hangul from 'hangul-js';
export default (input) => {
// 입력 없으면 그냥 냉무 회신
if (input === null || typeof input === 'undefined' || input === "") {
return '';
}
// 키맵 정의
const engToKorMap = {
q: 'ㅂ', w: 'ㅈ', e: 'ㄷ', r: 'ㄱ', t: 'ㅅ',
y: 'ㅛ', u: 'ㅕ', i: 'ㅑ', o: 'ㅐ', p: 'ㅔ',
a: 'ㅁ', s: 'ㄴ', d: 'ㅇ', f: 'ㄹ', g: 'ㅎ',
h: 'ㅗ', j: 'ㅓ', k: 'ㅏ', l: 'ㅣ',
z: 'ㅋ', x: 'ㅌ', c: 'ㅊ', v: 'ㅍ', b: 'ㅠ',
n: 'ㅜ', m: 'ㅡ',
Q: 'ㅃ', W: 'ㅉ', E: 'ㄸ', R: 'ㄲ', T: 'ㅆ',
O: 'ㅒ', P: 'ㅖ',
A: 'ㅁ', S: 'ㄴ', D: 'ㅇ', F: 'ㄹ', G: 'ㅎ',
H: 'ㅗ', J: 'ㅓ', K: 'ㅏ', L: 'ㅣ',
Z: 'ㅋ', X: 'ㅌ', C: 'ㅊ', V: 'ㅍ', B: 'ㅠ',
N: 'ㅜ', M: 'ㅡ',
};
// Step 1: 영문 -> 한글 자모 치환
const jamos = input
.split('')
.map(char => engToKorMap[char] ?? char)
.join('');
// Step 2: 자모 -> 완성형 한글 자동 조합
return Hangul.assemble(Hangul.disassemble(jamos));
};