@romanize/korean
Version:
Romanize Korean Hangul
5 lines (3 loc) • 8.9 kB
JavaScript
var B=require("node:module");var{defineProperty:c,getOwnPropertyNames:I,getOwnPropertyDescriptor:U}=Object,J=Object.prototype.hasOwnProperty;var A=new WeakMap,z=(t)=>{var r=A.get(t),n;if(r)return r;if(r=c({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")I(t).map((e)=>!J.call(r,e)&&c(r,e,{get:()=>t[e],enumerable:!(n=U(t,e))||n.enumerable}));return A.set(t,r),r};var a=(t,r)=>{for(var n in r)c(t,n,{get:r[n],enumerable:!0,configurable:!0,set:(e)=>r[n]=()=>e})};var D={};a(D,{romanize:()=>Y,RomanizationSystem:()=>C});module.exports=z(D);var R={"ᄀ":{base:"k"},"ᄁ":{base:"kk"},"ᄂ":{base:"n"},"ᄃ":{base:"t"},"ᄄ":{base:"tt"},"ᄅ":{base:"r"},"ᄆ":{base:"m"},"ᄇ":{base:"p"},"ᄈ":{base:"pp"},"ᄉ":{base:"s"},"ᄊ":{base:"ss"},"ᄋ":{base:""},"ᄌ":{base:"c"},"ᄍ":{base:"tch"},"ᄎ":{base:"ch'"},"ᄏ":{base:"k'"},"ᄐ":{base:"t'"},"ᄑ":{base:"p'"},"ᄒ":{base:"h"},"ᅡ":{base:"a",next:{"ᅦ":"aë"}},"ᅢ":{base:"ae"},"ᅣ":{base:"ya"},"ᅤ":{base:"yae"},"ᅥ":{base:"ŏ"},"ᅦ":{base:"e"},"ᅧ":{base:"yŏ"},"ᅨ":{base:"ye"},"ᅩ":{base:"o",next:{"ᅦ":"oë"}},"ᅪ":{base:"wa"},"ᅫ":{base:"wae"},"ᅬ":{base:"oe"},"ᅭ":{base:"yo"},"ᅮ":{base:"u"},"ᅯ":{base:"wŏ"},"ᅰ":{base:"we"},"ᅱ":{base:"wi"},"ᅲ":{base:"yu"},"ᅳ":{base:"ŭ"},"ᅴ":{base:"ŭi"},"ᅵ":{base:"i"},"":{base:""},"ᆨ":{base:"k",next:{"ᄋ":"g","ᄂ":"ngn","ᄅ":"ngn","ᄆ":"ngm"}},"ᆩ":{base:"k",next:{"ᄋ":"kk"}},"ᆪ":{base:"k",next:{"ᄋ":"ks"}},"ᆫ":{base:"n",next:{"ᄀ":"n'g","ᄃ":"nd","ᄅ":"nn","ᄇ":"nb","ᄌ":"nj"}},"ᆬ":{base:"n",next:{"ᄋ":"nj"}},"ᆭ":{base:"n",next:{"ᄋ":"nh"}},"ᆮ":{base:"t",next:{"ᄋ":"d","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄉ":"ss"}},"ᆯ":{base:"l",next:{"ᄋ":"r","ᄀ":"lg","ᄂ":"ll","ᄃ":"ld","ᄅ":"ll","ᄇ":"lb","ᄌ":"lj"}},"ᆰ":{base:"k",next:{"ᄋ":"lg"}},"ᆱ":{base:"m",next:{"ᄋ":"lm"}},"ᆲ":{base:"l",next:{"ᄋ":"lb"}},"ᆳ":{base:"l",next:{"ᄋ":"ls"}},"ᆴ":{base:"l",next:{"ᄋ":"t'"}},"ᆵ":{base:"p",next:{"ᄋ":"lp'"}},"ᆶ":{base:"l",next:{"ᄋ":"r"}},"ᆷ":{base:"m",next:{"ᄀ":"mg","ᄃ":"md","ᄅ":"mn","ᄇ":"mb","ᄌ":"mj"}},"ᆸ":{base:"p",next:{"ᄋ":"b","ᄂ":"mn","ᄅ":"mn","ᄆ":"mm"}},"ᆹ":{base:"p",next:{"ᄋ":"bs"}},"ᆺ":{base:"t",next:{"ᄋ":"ss"}},"ᆻ":{base:"t",next:{"ᄋ":"ss"}},"ᆼ":{base:"ng",next:{"ᄀ":"ngg","ᄃ":"ngd","ᄅ":"ngn","ᄇ":"ngb","ᄌ":"ngj"}},"ᆽ":{base:"t"},"ᆾ":{base:"t"},"ᆿ":{base:"k"},"ᇀ":{base:"t"},"ᇁ":{base:"p"},"ᇂ":{base:""}};var x={"ᄀ":{base:"g"},"ᄁ":{base:"kk"},"ᄂ":{base:"n"},"ᄃ":{base:"d"},"ᄄ":{base:"tt"},"ᄅ":{base:"r"},"ᄆ":{base:"m"},"ᄇ":{base:"b"},"ᄈ":{base:"pp"},"ᄉ":{base:"s"},"ᄊ":{base:"ss"},"ᄋ":{base:""},"ᄌ":{base:"j"},"ᄍ":{base:"jj"},"ᄎ":{base:"ch"},"ᄏ":{base:"k"},"ᄐ":{base:"t"},"ᄑ":{base:"p"},"ᄒ":{base:"h"},"ᅡ":{base:"a"},"ᅢ":{base:"ae"},"ᅣ":{base:"ya"},"ᅤ":{base:"yae"},"ᅥ":{base:"eo"},"ᅦ":{base:"e"},"ᅧ":{base:"yeo"},"ᅨ":{base:"ye"},"ᅩ":{base:"o"},"ᅪ":{base:"wa"},"ᅫ":{base:"wae"},"ᅬ":{base:"oe"},"ᅭ":{base:"yo"},"ᅮ":{base:"u"},"ᅯ":{base:"wo"},"ᅰ":{base:"we"},"ᅱ":{base:"wi"},"ᅲ":{base:"yu"},"ᅳ":{base:"eu"},"ᅴ":{base:"ui"},"ᅵ":{base:"i"},"":{base:""},"ᆨ":{base:"k",next:{"ᄋ":"g","ᄂ":"ngn","ᄅ":"ngn","ᄆ":"ngm","ᄒ":"k"}},"ᆩ":{base:"k",next:{"ᄋ":"kk"}},"ᆪ":{base:"k",next:{"ᄋ":"ks","ᄂ":"ngn","ᄅ":"ngn","ᄆ":"ngm","ᄒ":"k"}},"ᆫ":{base:"n",next:{"ᄅ":"ll"}},"ᆬ":{base:"n",next:{"ᄋ":"nj","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄒ":"ch"}},"ᆭ":{base:"n",next:{"ᄋ":"nh","ᄀ":"nk","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄇ":"nb","ᄒ":"ch"}},"ᆮ":{base:"t",next:{"ᄋ":"j","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄒ":"ch"}},"ᆯ":{base:"l",next:{"ᄋ":"r"}},"ᆰ":{base:"l",next:{"ᄋ":"lg"}},"ᆱ":{base:"l",next:{"ᄋ":"lm"}},"ᆲ":{base:"l",next:{"ᄋ":"lb"}},"ᆳ":{base:"l",next:{"ᄋ":"ls"}},"ᆴ":{base:"l",next:{"ᄋ":"lt"}},"ᆵ":{base:"l",next:{"ᄋ":"lp"}},"ᆶ":{base:"l",next:{"ᄋ":"lh"}},"ᆷ":{base:"m"},"ᆸ":{base:"p",next:{"ᄋ":"b","ᄂ":"mn","ᄅ":"mn","ᄆ":"mm","ᄒ":"p"}},"ᆹ":{base:"p",next:{"ᄋ":"ps"}},"ᆺ":{base:"t",next:{"ᄋ":"s","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm"}},"ᆻ":{base:"t",next:{"ᄋ":"ss"}},"ᆼ":{base:"ng"},"ᆽ":{base:"t",next:{"ᄋ":"j","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄒ":"ch"}},"ᆾ":{base:"t",next:{"ᄋ":"ch","ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄒ":"ch"}},"ᆿ":{base:"k"},"ᇀ":{base:"t",next:{"ᄂ":"nn","ᄅ":"nn","ᄆ":"nm","ᄒ":"ch"}},"ᇁ":{base:"p"},"ᇂ":{base:"t",next:{"ᄋ":"h","ᄀ":"k","ᄁ":"kk","ᄂ":"nn","ᄃ":"t","ᄄ":"tt","ᄅ":"nn","ᄆ":"nm","ᄇ":"p","ᄈ":"pp","ᄉ":"s","ᄊ":"ss","ᄌ":"ch","ᄍ":"jj","ᄐ":"t","ᄒ":"h"}}};var L={"ᄀ":{base:"k"},"ᄁ":{base:"kk"},"ᄂ":{base:"n"},"ᄃ":{base:"t"},"ᄄ":{base:"tt"},"ᄅ":{base:"l"},"ᄆ":{base:"m"},"ᄇ":{base:"p"},"ᄈ":{base:"pp"},"ᄉ":{base:"s"},"ᄊ":{base:"ss"},"ᄋ":{base:""},"ᄌ":{base:"c"},"ᄍ":{base:"cc"},"ᄎ":{base:"ch"},"ᄏ":{base:"kh"},"ᄐ":{base:"th"},"ᄑ":{base:"ph"},"ᄒ":{base:"h"},"ᅡ":{base:"a"},"ᅢ":{base:"ay"},"ᅣ":{base:"ya"},"ᅤ":{base:"yay"},"ᅥ":{base:"e"},"ᅦ":{base:"ey"},"ᅧ":{base:"ye"},"ᅨ":{base:"yey"},"ᅩ":{base:"o"},"ᅪ":{base:"wa"},"ᅫ":{base:"way"},"ᅬ":{base:"oy"},"ᅭ":{base:"yo"},"ᅮ":{base:"u"},"ᅯ":{base:"we"},"ᅰ":{base:"wey"},"ᅱ":{base:"wi"},"ᅲ":{base:"yu"},"ᅳ":{base:"u"},"ᅴ":{base:"uy"},"ᅵ":{base:"i"},"":{base:""},"ᆨ":{base:"k"},"ᆩ":{base:"kk"},"ᆪ":{base:"ks"},"ᆫ":{base:"n"},"ᆬ":{base:"nc"},"ᆭ":{base:"nh"},"ᆮ":{base:"t"},"ᆯ":{base:"l"},"ᆰ":{base:"lkh"},"ᆱ":{base:"lm"},"ᆲ":{base:"lph"},"ᆳ":{base:"ls"},"ᆴ":{base:"lth"},"ᆵ":{base:"lph"},"ᆶ":{base:"lh"},"ᆷ":{base:"m"},"ᆸ":{base:"p"},"ᆹ":{base:"ps"},"ᆺ":{base:"s"},"ᆻ":{base:"ss"},"ᆼ":{base:"ng"},"ᆽ":{base:"c"},"ᆾ":{base:"ch"},"ᆿ":{base:"kh"},"ᇀ":{base:"th"},"ᇁ":{base:"ph"},"ᇂ":{base:"h"}};class o{static SBase=44032;static LBase=4352;static VBase=4449;static TBase=4519;static LCount=19;static VCount=21;static TCount=28;static NCount=o.VCount*o.TCount;static SCount=o.LCount*o.NCount;syllable;choseong;jungseong;jongseong;constructor(t){if(t.length!==1||t.charCodeAt(0)<44032||t.charCodeAt(0)>55203)throw new Error(`Invalid Hangul Syllable "${t}"`);this.syllable=t;let{choseong:r,jungseong:n,jongseong:e}=this.map();this.choseong=r,this.jungseong=n,this.jongseong=e}map(){let r=this.syllable.charCodeAt(0)-o.SBase,n=Math.floor(r/o.NCount),e=Math.floor(r%o.NCount/o.TCount),s=r%o.TCount,i=String.fromCharCode(o.LBase+n),f=String.fromCharCode(o.VBase+e),u=s===0?"":String.fromCharCode(o.TBase+s);return{choseong:i,jungseong:f,jongseong:u}}get initial(){return this.choseong}get medial(){return this.jungseong}get final(){return this.jongseong}}var O={HANGUL_JAMO:{start:4352,end:4607},HANGUL_COMPATIBILITY_JAMO:{start:12592,end:12687},HANGUL_JAMO_EXTENDED_A:{start:43360,end:43391},HANGUL_JAMO_EXTENDED_B:{start:55216,end:55295},HANGUL_SYLLABLES:{start:44032,end:55215},CJK_SYMBOLS_AND_PUNCTUATION:{start:12288,end:12351},BASIC_LATIN:{start:0,end:127}};class h{root;constructor(t,r,n){this.root=t&&r&&n?new m(t,r,n):null}insert(t,r,n){let e=new m(t,r,n);if(this.root===null)return this.root=e,e;return this.root.insert(e),e}search(t){if(this.root===null)return[];return this.root.search(t)}exists(t){return this.search(t).length>0}}class m{start;end;value;left;right;constructor(t,r,n){this.start=t,this.end=r,this.value=n,this.left=null,this.right=null}insert(t){if(t.start<this.start)if(this.left===null)this.left=t;else this.left.insert(t);else if(this.right===null)this.right=t;else this.right.insert(t)}search(t){let r=[];if(this.left!==null)r.push(...this.left.search(t));if(this.start<=t&&t<=this.end)r.push(this);if(this.right!==null)r.push(...this.right.search(t));return r}}class T extends h{constructor(){super();Object.entries(O).forEach(([t,{start:r,end:n}])=>{super.insert(r,n,t)})}isHangulChar(t){let r=t.charCodeAt(0);return super.exists(r)}isHangul(t){for(let r of t)if(!this.isHangulChar(r))return!1;return!0}}var v=new T;function G(t){if(!v.isHangul(t))throw new Error("Not a Hangul string");return t.split("").reduce((n,e)=>{let s=v.search(e.charCodeAt(0));switch(s.length===1?s[0].value:null){case"HANGUL_SYLLABLES":let f=new o(e),{initial:u,medial:N,final:p}=f;if(p!=="")return n.concat([u,N,p]);return n.concat([u,N]);case null:default:return n.concat([e])}},[])}function E(t,r){let n="";for(let e=0;e<t.length;e++){if(t[e]in r){let s=t[e];if(r[s].next&&e+1<t.length&&t[e+1]in r){let i=t[e+1];if(i in r[s].next){let f=i;n+=r[s].next[f],e++;continue}}n+=r[s].base;continue}n+=t[e]}return n}var C;((e)=>{e.REVISED="RR";e.MCCUNE="MR";e.YALE="YL"})(C||={});var M={system:"RR"};function Y(t,r=M){let n=G(t);switch(r.system){default:case"RR":return E(n,x);case"MR":return E(n,R);case"YL":return E(n,L)}}
//# debugId=66241CE121911B4964756E2164756E21
//# sourceMappingURL=index.js.map