/
hangul-misc.min.js
8 lines (8 loc) · 3.08 KB
/
hangul-misc.min.js
1
2
3
4
5
6
7
8
/**
* hangul-misc.js
* http://github.com/clee704/hangul-js
* @version 1.1.2
* @copyright Copyright 2013, Choongmin Lee
* @license MIT license
*/
(function(r,e){"use strict";function i(r){var e=[];for(var i=0;i<r.length;i++){var n=r.charAt(i);if(n===" ")continue;if(n==="\\"){n="₩"}else if("!"<=n&&n<="~"){n=String.fromCharCode(n.charCodeAt(0)+65248)}e.push(n)}return e.join("")}function n(r,e){return a(r,e)}function t(r,e){return a(r,e,true)}var o=new r.Map({a:"A",b:"B",c:"C",d:"D",e:"E",f:"F",g:"G",h:"H",i:"I",j:"J",k:"K",l:"L",m:"M",n:"N",o:"O",p:"P",q:"Q",r:"R",s:"S",t:"T",u:"U",v:"V",w:"W",x:"X",y:"Y",z:"Z","`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+","[":"{","]":"}","\\":"|",";":":","'":'"',",":"<",".":">","/":"?"});function a(r,e,i){var n=[];for(var t=0;t<r.length;t++){var o=r.charAt(t);var a=e.toQwerty(o);if(o!==a||e.map.hasValue(o)){var c=e.fromQwerty(u(a,i))}else{var c=s(o,i)}n.push(c)}return n.join("")}function u(r,e){var i=[];for(var n=0;n<r.length;n++){i.push(s(r.charAt(n),e))}return i.join("")}function s(r,e){return!e?o.get(r)||r:o.inverse.get(r)||r}function c(e){var i=[];e=h(e,false);for(var n=0;n<e.length;n++){var t=e.charAt(n);var o=e.charAt(n+1);if(t==="ㅇ"&&r.isMedial(o))continue;i.push(t)}return i.join("")}function h(e,i){var n=[];for(var t=0;t<e.length;t++){var o=e.charAt(t);if(!r.isSyllable(o)){n.push(o);continue}var a=r.decompose(o);n.push(a[0]);n.push(a[1]);if(!a[2])continue;var u=r.decomposeDoubleJamo(a[2]);if(i&&u){n.push(u[0],u[1])}else{n.push(a[2])}}return n.join("")}function f(e){var i=[];for(var n=0;n<e.length;n++){var t=e.charAt(n);i.push(r.getInitial(t)||t)}return i.join("")}function l(r){var e=[];r=h(r,true);for(var i=0;i<r.length;i++){var n=r.charAt(i);var t=r.charAt(i+1);var o=r.charAt(i+2);var a=r.charAt(i+3);i=v(e,r,i,n,t,o,a)}return e.join("")}function v(e,i,n,t,o,a,u){if(r.isMedial(t)&&r.getFinal(e[e.length-1])){u=a;a=o;o=t;t="ㅇ";n-=1}if(!r.isInitial(t)||!r.isMedial(o)){e.push(t);return n}if(!r.isFinal(a)||!p(a,u)){e.push(r.compose(t,o));return n+=1}var s=r.composeDoubleJamo(a,u);if(!r.isFinal(s)||r.isMedial(i.charAt(n+4))&&(u==="ㅎ"||a===u&&(a==="ㄱ"||a==="ㅅ"))){e.push(r.compose(t,o,a));return n+=2}e.push(r.compose(t,o,s));return n+=3}function p(e,i){return!r.isMedial(i)||(!r.isIotizedVowel(i)||e!=="ㄷ"&&e!=="ㅌ")&&e!=="ㅇ"&&e!=="ㅎ"}function m(e){var i=[];for(var n=0;n<e.length;n++){i.push(e.charAt(n))}for(var n=0;n<i.length;n++){var t=r.decompose(i[n]);var o=r.decompose(i[n+1]);if(!t||!o){continue}var a=t[2];if(!a){continue}var u=o[0];var s=o[1];if(g(a,u,s)){var c=r.decomposeDoubleJamo(a);if(c&&!r.isInitial(a)){i[n]=r.compose(t[0],t[1],c[0]);i[n+1]=r.compose(c[1],s,o[2])}else{i[n]=r.compose(t[0],t[1]);i[n+1]=r.compose(a,s,o[2])}continue}var h=r.composeDoubleJamo(a,u);if(h&&r.isInitial(h)){i[n]=r.compose(t[0],t[1]);i[n+1]=r.compose(h,s,o[2])}}return i.join("")}function g(e,i,n){return e!=="ㅇ"&&e!=="ㅎ"&&e!=="ㄶ"&&e!=="ㅀ"&&i==="ㅇ"&&(e!=="ㄷ"&&e!=="ㅌ"||!r.isIotizedVowel(n))}r.misc={applyFullWidthStyle:i,withShift:n,withNoShift:t,serialize:c,getInitials:f,tugInitials:l,nudgeFinals:m}})(hangul);