hangul-romanization
Version:
Romanizes Hangul (Korean) characters
34 lines (28 loc) • 1.29 kB
text/typescript
/**
* @license MIT Copyright 2016 Daniel Imms (http://www.growingwiththeweb.com)
*/
import { REVISED_ROMANIZATION_OF_KOREAN } from './conversionSystems/revisedRomanizationOfKorean';
const UNICODE_OFFSET = 44032;
const UNICODE_MAX = 55215;
function convertCharacter(char: string) {
const charCode = char.charCodeAt(0);
const isHangul = charCode >= UNICODE_OFFSET && charCode < UNICODE_MAX;
if (isHangul) {
let unicodeOffset = charCode - UNICODE_OFFSET;
const trailerOffset = unicodeOffset % REVISED_ROMANIZATION_OF_KOREAN.consonants.final.length;
unicodeOffset -= trailerOffset;
unicodeOffset /= REVISED_ROMANIZATION_OF_KOREAN.consonants.final.length;
const vowelOffset = unicodeOffset % REVISED_ROMANIZATION_OF_KOREAN.vowels.length;
unicodeOffset -= vowelOffset;
unicodeOffset /= REVISED_ROMANIZATION_OF_KOREAN.vowels.length;
const leadOffset = unicodeOffset;
const result = REVISED_ROMANIZATION_OF_KOREAN.consonants.initial[leadOffset]
+ REVISED_ROMANIZATION_OF_KOREAN.vowels[vowelOffset]
+ REVISED_ROMANIZATION_OF_KOREAN.consonants.final[trailerOffset];
return result;
}
return char;
}
export function convert(text: string): string {
return text.split('').map(convertCharacter).join('');
}