UNPKG

@daeinc/hangul

Version:
7 lines (6 loc) 11.5 kB
/*! * @daeinc/hangul v0.10.0 | MIT * Find third-party licenses in LICENSE.txt */ var Ru=["\u3131","\u3132","\u3134","\u3137","\u3138","\u3139","\u3141","\u3142","\u3143","\u3145","\u3146","\u3147","\u3148","\u3149","\u314A","\u314B","\u314C","\u314D","\u314E"],vu=["\u314F","\u3150","\u3151","\u3152","\u3153","\u3154","\u3155","\u3156","\u3157","\u3157\u314F","\u3157\u3150","\u3157\u3163","\u315B","\u315C","\u315C\u3153","\u315C\u3154","\u315C\u3163","\u3160","\u3161","\u3161\u3163","\u3163"],Gu=["","\u3131","\u3132","\u3131\u3145","\u3134","\u3134\u3148","\u3134\u314E","\u3137","\u3139","\u3139\u3131","\u3139\u3141","\u3139\u3142","\u3139\u3145","\u3139\u314C","\u3139\u314D","\u3139\u314E","\u3141","\u3142","\u3142\u3145","\u3145","\u3146","\u3147","\u3148","\u314A","\u314B","\u314C","\u314D","\u314E"],I=["\u314F","\u3150","\u3151","\u3152","\u3153","\u3154","\u3155","\u3156","\u3163"],y=["\u3157","\u315B","\u315C","\u3160","\u3161"],F=["\u3158","\u3159","\u315A","\u315D","\u315E","\u315F","\u3162"],$=44032,P=55215,w=12592,W=12687,V=12593,k=12622,X=12623,Y=12643,Ju=12645,Mu=12678,Uu=12679,Iu=12686,z=4352,Q=4607,K=4352,yu=4370,Fu=4371,Z=4446,q=4449,$u=4469,Pu=4470,uu=4519,nu=4520,wu=4546,Wu=4547,eu=4607,Cu=43360,ou=43391,tu=55216,su=55295,Vu=55216,ku=55238,Xu=55243,Yu=55291;function E(n){let u=n[n.length-1];return [n.slice(0,-1),u??""]}function D(...n){return n.join("")}function ru(n){return /^\s$/.test(n)}function iu(n,u){if(n===false)throw new Error(u??"Invalid condition")}function T(n,u){return n.some(e=>e===u)}function au(n,u){return Object.prototype.hasOwnProperty.call(n,u)}var A=[..."\uAC01\uD7A3".normalize("NFD")].map(n=>n.charCodeAt(0)),f=44032,lu=55203,h=28,cu=21,L={"":"",\u3131:"\u3131",\u3132:"\u3132",\u3133:"\u3131\u3145",\u3134:"\u3134",\u3135:"\u3134\u3148",\u3136:"\u3134\u314E",\u3137:"\u3137",\u3138:"\u3138",\u3139:"\u3139",\u313A:"\u3139\u3131",\u313B:"\u3139\u3141",\u313C:"\u3139\u3142",\u313D:"\u3139\u3145",\u313E:"\u3139\u314C",\u313F:"\u3139\u314D",\u3140:"\u3139\u314E",\u3141:"\u3141",\u3142:"\u3142",\u3143:"\u3143",\u3144:"\u3142\u3145",\u3145:"\u3145",\u3146:"\u3146",\u3147:"\u3147",\u3148:"\u3148",\u3149:"\u3149",\u314A:"\u314A",\u314B:"\u314B",\u314C:"\u314C",\u314D:"\u314D",\u314E:"\u314E"},N={\u314F:"\u314F",\u3150:"\u3150",\u3151:"\u3151",\u3152:"\u3152",\u3153:"\u3153",\u3154:"\u3154",\u3155:"\u3155",\u3156:"\u3156",\u3157:"\u3157",\u3158:"\u3157\u314F",\u3159:"\u3157\u3150",\u315A:"\u3157\u3163",\u315B:"\u315B",\u315C:"\u315C",\u315D:"\u315C\u3153",\u315E:"\u315C\u3154",\u315F:"\u315C\u3163",\u3160:"\u3160",\u3161:"\u3161",\u3162:"\u3161\u3163",\u3163:"\u3163"},R=["\u3131","\u3132","\u3134","\u3137","\u3138","\u3139","\u3141","\u3142","\u3143","\u3145","\u3146","\u3147","\u3148","\u3149","\u314A","\u314B","\u314C","\u314D","\u314E"],m=Object.values(N),d=["","\u3131","\u3132","\u3133","\u3134","\u3135","\u3136","\u3137","\u3139","\u313A","\u313B","\u313C","\u313D","\u313E","\u313F","\u3140","\u3141","\u3142","\u3144","\u3145","\u3146","\u3147","\u3148","\u314A","\u314B","\u314C","\u314D","\u314E"].map(n=>L[n]);function S(n){let u=n.charCodeAt(0);if(!(f<=u&&u<=lu))return;let C=u-f,o=C%h,t=(C-o)/h%cu,s=Math.floor((C-o)/h/cu);return {choseong:R[s],jungseong:m[t],jongseong:d[o]}}function H(n){let u=[];for(let e of n){let C=S(e);if(C!=null){u.push([...C.choseong,...C.jungseong,...C.jongseong]);continue}if(au(L,e)){let o=L[e];u.push([...o]);continue}if(au(N,e)){let o=N[e];u.push([...o]);continue}u.push([e]);}return u}function j(n){return H(n).reduce((u,e)=>`${u}${e.join("")}`,"")}function Au(n){return T(R,n)}function B(n){return T(d,n)}function a(n){return n?n in N?true:T(m,n):false}function du(n,u){var e,C;return (C=(e=Object.entries(N).find(([,o])=>o===`${n}${u}`))==null?void 0:e[0])!=null?C:`${n}${u}`}function _(n,u,e=""){if(Au(n)===false||a(u)===false||B(e)===false)throw new Error(`Invalid hangul Characters: ${n}, ${u}, ${e}`);let C=m.length,o=d.length,t=R.indexOf(n),s=m.indexOf(u),r=d.indexOf(e),l=t*C*o,c=s*o,O=f+l+c+r;return String.fromCharCode(O)}function Bu(n,u){let e=n[n.length-1];if(e==null)return false;let C=e.charCodeAt(0);if(C<f||C>lu)return false;let t=(C-f)%h,s=d[t].length;switch(u?.only){case "single":return s===1;case "double":return s===2;default:return t>0}}function Ou(n){let u=n[n.length-1];if(u==null)return "";let e=(()=>{let C=H(u),[o]=E(C[0]);if(o.length<=3){let[t,s,r]=o;return s!=null?a(r)?_(t,`${s}${r}`):_(t,s,r):t}else {let[t,s,r,l]=o;return _(t,`${s}${r}`,l)}})();return [n.substring(0,n.length-1),e].join("")}function hu(n){return /^[가-힣]$/.test(n)}function gu(n){return /^[ㄱ-ㅣ]$/.test(n)}function mu(n,u){return a(`${n}${u}`)?du(n,u):a(n)===false&&a(u)?_(n,u):D(n,u)}function pu(n,u){let e=H(n)[0],[,C]=E(e);return D(Ou(n),_(C,u))}function Su(n,u){iu(hu(n)||gu(n),`Invalid source character: ${n}. Source must be one character.`),iu(gu(u),`Invalid next character: ${u}. Next character must be one of the choseong, jungseong, or jongseong.`);let e=H(n)[0];if(e.length===1){let fu=e[0];return mu(fu,u)}let[o,t]=E(e),s=E(o)[1];if(Au(t)&&a(u))return pu(n,u);let c=ju(o[0]);if(a(`${t}${u}`))return c(`${t}${u}`)();if(a(`${s}${t}`)&&B(u))return c(`${s}${t}`)(u);if(a(t)&&B(u))return c(t)(u);let x=c(a(`${o[1]}${o[2]}`)?`${o[1]}${o[2]}`:o[1]),U=t;return Bu(n,{only:"single"})&&B(`${U}${u}`)?x(`${U}${u}`):D(n,u)}function Hu(n,u){let[e,C]=E(n.split("")),o=ru(C)||ru(u);return D(...e,o?D(C,u):Su(C,u))}var ju=n=>u=>(e="")=>_(n,u,e);function v(n){return j(n.join("")).split("").reduce(Hu)}var p={START_CHOSEONG:A[0],START_JUNGSEONG:A[1],START_JONGSEONG:A[2],END_CHOSEONG:A[3],END_JUNGSEONG:A[4],END_JONGSEONG:A[5]};new RegExp(`[^\\u${p.START_CHOSEONG.toString(16)}-\\u${p.END_CHOSEONG.toString(16)}\u3131-\u314E\\s]+`,"ug");new RegExp(`[\\u${p.START_CHOSEONG.toString(16)}-\\u${p.END_CHOSEONG.toString(16)}]`,"g");var i=(n,u)=>{n.length>1&&(console.warn(`Only the first character ("${n[0]}") will be processed.`),n=n[0]);let e={jamo:false,jamoExtendedA:false,jamoExtendedB:false,compatJamo:true,syllable:true,...u};return e.syllable&&G(n)||e.jamo&&J(n)||e.compatJamo&&M(n)||e.jamoExtendedA&&Lu(n)||e.jamoExtendedB&&Tu(n)},G=n=>{let u=n.charCodeAt(0);return u>=44032&&u<=55215},J=n=>{let u=n.charCodeAt(0);return u>=4352&&u<=4607},M=n=>{let u=n.charCodeAt(0);return u>=12592&&u<=12687},Lu=n=>{let u=n.charCodeAt(0);return u>=43360&&u<=43391},Tu=n=>{let u=n.charCodeAt(0);return u>=55216&&u<=55295},nn=n=>/^[ㄱ-ㅎ]$/.test(n),en=(n,u)=>{if(!/^[ㅏ-ㅣ]$/.test(n))return false;let e={vertical:true,horizontal:true,compound:true,...u};return !(I.includes(n)&&!e.vertical||y.includes(n)&&!e.horizontal||F.includes(n)&&!e.compound)};var b=n=>{let u=n.join(""),e=[],C=0;for(;C<u.length;){let o=u[C];if(i(o)){let t=[o],s=C+1;for(;s<u.length&&i(u[s]);)t.push(u[s]),s++;let r=t.length;for(;r>0;){let l=t.slice(0,r);try{let c=v(l);if(e.push(c),r<t.length){let O=t.slice(r),x=b(O);e.push(x);}break}catch{r--;}}C=s;}else e.push(o),C++;}return e.join("")},an=n=>{let u=n.join(""),e=[],C=0;for(;C<u.length;){let o=u[C];if(i(o)){let t=[o],s=C+1;for(;s<u.length&&i(u[s]);)t.push(u[s]),s++;e.push(v(t)),C=s;}else e.push(o),C++;}return e.join("")};var Bn=n=>B(n);var Eu=n=>{n.length>1&&(console.warn(`Only the first character ("${n[0]}") will be processed.`),n=n[0]);let u=n.charCodeAt(0);if(J(n)){if(u>=4352&&u<=4446||u>=4520&&u<=4607)return "ja";if(u>=4449&&u<=4519)return "mo"}if(M(n)){if(u>=12593&&u<=12622)return "ja";if(u>=12623&&u<=12643)return "mo"}return G(n)?"syllable":"other"};var g=n=>Array.from(n).map(u=>{if(!i(u))return u;let e=S(u);if(e)return e;{let C=Eu(u);if(C==="ja")return {choseong:j(u),jungseong:"",jongseong:""};if(C==="mo")return {choseong:"",jungseong:j(u),jongseong:""}}return u});var Ln=n=>g(n).map(u=>typeof u=="object"?`${u.choseong}${u.jungseong}${u.jongseong}`:u).join("");var Du=class n{char;disassembled;id;constructor(u){i(u)||console.warn(`It may be a mistake to store "${u}" in HangulSyllable object`),this.id=-1,this.char=u,u?this.disassembled=g(u)[0]:this.disassembled={choseong:"",jungseong:"",jongseong:""};}setId(u){this.id=u;}clone(){return new n(this.char)}isEmpty(){return !this.hasComponent()}hasComponent(){return this.hasChoseong()||this.hasJungseong()||this.hasJongseong()}hasChoseong(){return this.disassembled.choseong.length>0}hasJungseong(){return this.disassembled.jungseong.length>0}hasJongseong(){return this.disassembled.jongseong.length>0}removeSingleComponent(){this.disassembled.jongseong?this.disassembled.jongseong=this.disassembled.jongseong.slice(0,-1):this.disassembled.jungseong?this.disassembled.jungseong=this.disassembled.jungseong.slice(0,-1):this.disassembled.choseong=this.disassembled.choseong.slice(0,-1),this.char=b(this.getDisassembledStringArray());}removeSingleJongseong(){this.disassembled.jongseong=this.disassembled.jongseong.slice(0,-1),this.char=b(this.getDisassembledStringArray());}updateSyllable(u){this.char=u,u?this.disassembled=g(u)[0]:this.disassembled={choseong:"",jungseong:"",jongseong:""};}getDisassembled(){return this.disassembled}getDisassembledStringArray(){return Object.values(this.disassembled).map(u=>u)}getDisassembledString(){return Object.values(this.disassembled).join("")}};var Fn=(n,u)=>{if(!u)return false;if((n.length>1||u.length>1)&&console.warn('the input string to "isFirstSyllableReady()" is greater than 1'),n=n[0],u=u[0],!i(n)||!i(u))return true;let e=g(n)[0],C=g(u)[0];return typeof e=="object"&&typeof C=="object"&&(C.choseong.length>0||C.jungseong.length>0)};export{Ru as CHOSEONGS,k as HANGUL_COMPAT_CONSONANT_END_CHARCODE,V as HANGUL_COMPAT_CONSONANT_START_CHARCODE,W as HANGUL_COMPAT_JAMO_END_CHARCODE,w as HANGUL_COMPAT_JAMO_START_CHARCODE,Mu as HANGUL_COMPAT_OLD_CONSONANT_END_CHARCODE,Ju as HANGUL_COMPAT_OLD_CONSONANT_START_CHARCODE,Iu as HANGUL_COMPAT_OLD_VOWEL_END_CHARCODE,Uu as HANGUL_COMPAT_OLD_VOWEL_START_CHARCODE,Y as HANGUL_COMPAT_VOWEL_END_CHARCODE,X as HANGUL_COMPAT_VOWEL_START_CHARCODE,Q as HANGUL_JAMO_END_CHARCODE,ou as HANGUL_JAMO_EXTENDED_A_END_CHARCODE,Cu as HANGUL_JAMO_EXTENDED_A_START_CHARCODE,Yu as HANGUL_JAMO_EXTENDED_B_CONSONANT_END_CHARCODE,Xu as HANGUL_JAMO_EXTENDED_B_CONSONANT_START_CHARCODE,su as HANGUL_JAMO_EXTENDED_B_END_CHARCODE,tu as HANGUL_JAMO_EXTENDED_B_START_CHARCODE,ku as HANGUL_JAMO_EXTENDED_B_VOWEL_END_CHARCODE,Vu as HANGUL_JAMO_EXTENDED_B_VOWEL_START_CHARCODE,wu as HANGUL_JAMO_FINAL_CONSONANT_END_CHARCODE,nu as HANGUL_JAMO_FINAL_CONSONANT_START_CHARCODE,yu as HANGUL_JAMO_INITIAL_CONSONANT_END_CHARCODE,K as HANGUL_JAMO_INITIAL_CONSONANT_START_CHARCODE,eu as HANGUL_JAMO_OLD_FINAL_CONSONANT_END_CHARCODE,Wu as HANGUL_JAMO_OLD_FINAL_CONSONANT_START_CHARCODE,Z as HANGUL_JAMO_OLD_INITIAL_CONSONANT_END_CHARCODE,Fu as HANGUL_JAMO_OLD_INITIAL_CONSONANT_START_CHARCODE,uu as HANGUL_JAMO_OLD_VOWEL_END_CHARCODE,Pu as HANGUL_JAMO_OLD_VOWEL_START_CHARCODE,z as HANGUL_JAMO_START_CHARCODE,$u as HANGUL_JAMO_VOWEL_END_CHARCODE,q as HANGUL_JAMO_VOWEL_START_CHARCODE,P as HANGUL_SYLLABLES_END_CHARCODE,$ as HANGUL_SYLLABLES_START_CHARCODE,Du as HangulSyllable,Gu as JONGSEONGS_DISASSEMBLED,vu as JUNGSEONGS,F as VOWELS_COMPOUND,y as VOWELS_HORIZONTAL,I as VOWELS_VERTICAL,an as _assemble,b as assemble,Bn as canBeJongseong,g as disassemble,Ln as disassembleToJamoString,nn as isConsonant,Fn as isFirstSyllableReady,i as isHangul,M as isHangulCompatJamo,J as isHangulJamo,Lu as isHangulJamoExtendedA,Tu as isHangulJamoExtendedB,G as isHangulSyllable,Eu as isJaOrMo,en as isVowel};//# sourceMappingURL=index.esm.js.map //# sourceMappingURL=index.esm.js.map