forked from e-/Hangul.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhangul.min.js
2 lines (2 loc) · 5.27 KB
/
hangul.min.js
1
2
/*! hangul-js 2017-03-29 */
!function(){"use strict";function a(a){for(var b=a.length,c={0:0},d=0;b>d;d++)a[d]&&(c[a[d].charCodeAt(0)]=d);return c}function b(a){for(var b,c,d=a.length,e={},f=0;d>f;f++)b=a[f][0].charCodeAt(0),c=a[f][1].charCodeAt(0),"undefined"==typeof e[b]&&(e[b]={}),e[b][c]=a[f][2].charCodeAt(0);return e}function c(a){return k[a]}function d(a){return"undefined"!=typeof l[a]}function e(a){return"undefined"!=typeof m[a]}function f(a){return"undefined"!=typeof n[a]}function g(a){return a>=44032&&55203>=a}function h(a,b){return p[a]&&p[a][b]?p[a][b]:!1}function i(a,b){return o[a]&&o[a][b]?o[a][b]:!1}function j(a){this.string=a,this.disassembled=A(a).join("")}var k,l,m,n,o,p,q=["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],r=["ㅏ","ㅐ","ㅑ","ㅒ","ㅓ","ㅔ","ㅕ","ㅖ","ㅗ",["ㅗ","ㅏ"],["ㅗ","ㅐ"],["ㅗ","ㅣ"],"ㅛ","ㅜ",["ㅜ","ㅓ"],["ㅜ","ㅔ"],["ㅜ","ㅣ"],"ㅠ","ㅡ",["ㅡ","ㅣ"],"ㅣ"],s=["","ㄱ","ㄲ",["ㄱ","ㅅ"],"ㄴ",["ㄴ","ㅈ"],["ㄴ","ㅎ"],"ㄷ","ㄹ",["ㄹ","ㄱ"],["ㄹ","ㅁ"],["ㄹ","ㅂ"],["ㄹ","ㅅ"],["ㄹ","ㅌ"],["ㄹ","ㅍ"],["ㄹ","ㅎ"],"ㅁ","ㅂ",["ㅂ","ㅅ"],"ㅅ","ㅆ","ㅇ","ㅈ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],t=44032,u=["ㄱ","ㄲ","ㄳ","ㄴ","ㄵ","ㄶ","ㄷ","ㄸ","ㄹ","ㄺ","ㄻ","ㄼ","ㄽ","ㄾ","ㄿ","ㅀ","ㅁ","ㅂ","ㅃ","ㅄ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],v=["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],w=["ㅏ","ㅐ","ㅑ","ㅒ","ㅓ","ㅔ","ㅕ","ㅖ","ㅗ","ㅘ","ㅙ","ㅚ","ㅛ","ㅜ","ㅝ","ㅞ","ㅟ","ㅠ","ㅡ","ㅢ","ㅣ"],x=["","ㄱ","ㄲ","ㄳ","ㄴ","ㄵ","ㄶ","ㄷ","ㄹ","ㄺ","ㄻ","ㄼ","ㄽ","ㄾ","ㄿ","ㅀ","ㅁ","ㅂ","ㅄ","ㅅ","ㅆ","ㅇ","ㅈ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],y=[["ㄱ","ㅅ","ㄳ"],["ㄴ","ㅈ","ㄵ"],["ㄴ","ㅎ","ㄶ"],["ㄹ","ㄱ","ㄺ"],["ㄹ","ㅁ","ㄻ"],["ㄹ","ㅂ","ㄼ"],["ㄹ","ㅅ","ㄽ"],["ㄹ","ㅌ","ㄾ"],["ㄹ","ㅍ","ㄿ"],["ㄹ","ㅎ","ㅀ"],["ㅂ","ㅅ","ㅄ"]],z=[["ㅗ","ㅏ","ㅘ"],["ㅗ","ㅐ","ㅙ"],["ㅗ","ㅣ","ㅚ"],["ㅜ","ㅓ","ㅝ"],["ㅜ","ㅔ","ㅞ"],["ㅜ","ㅣ","ㅟ"],["ㅡ","ㅣ","ㅢ"]];k=a(u),l=a(v),m=a(w),n=a(x),o=b(y),p=b(z);var A=function(a,b){if(null===a)throw new Error("Arguments cannot be null");"object"==typeof a&&(a=a.join(""));for(var f,h,i,j,k,o=[],p=a.length,u=0;p>u;u++){var v=[];j=a.charCodeAt(u),g(j)?(j-=t,i=j%28,h=(j-i)/28%21,f=parseInt((j-i)/28/21),v.push(q[f]),"object"==typeof r[h]?v=v.concat(r[h]):v.push(r[h]),i>0&&("object"==typeof s[i]?v=v.concat(s[i]):v.push(s[i]))):c(j)?(k=d(j)?q[l[j]]:s[n[j]],"string"==typeof k?v.push(k):v=v.concat(k)):e(j)?(k=r[m[j]],"string"==typeof k?v.push(k):v=v.concat(k)):v.push(a.charAt(u)),b?o.push(v):o=o.concat(v)}return o},B=function(a){function b(b){var c,f,g,k,o=0,q="";if(!(p+1>b))for(var r=1;;r++){if(1===r){if(c=a[p+r].charCodeAt(0),e(c))return b>=p+r+1&&e(f=a[p+r+1].charCodeAt(0))?(j.push(String.fromCharCode(h(c,f))),void(p=b)):(j.push(a[p+r]),void(p=b));if(!d(c))return j.push(a[p+r]),void(p=b);q=a[p+r]}else if(2===r){if(f=a[p+r].charCodeAt(0),d(f))return c=i(c,f),q=String.fromCharCode(c),j.push(q),void(p=b);q=String.fromCharCode(28*(21*l[c]+m[f])+t)}else 3===r?(g=a[p+r].charCodeAt(0),h(f,g)?f=h(f,g):o=g,q=String.fromCharCode(28*(21*l[c]+m[f])+n[o]+t)):4===r?(k=a[p+r].charCodeAt(0),o=i(o,k)?i(o,k):k,q=String.fromCharCode(28*(21*l[c]+m[f])+n[o]+t)):5===r&&(k=a[p+r].charCodeAt(0),o=i(o,k),q=String.fromCharCode(28*(21*l[c]+m[f])+n[o]+t));if(p+r>=b)return j.push(q),void(p=b)}}"string"==typeof a&&(a=A(a));for(var c,g,j=[],k=a.length,o=0,p=-1,q=0;k>q;q++)c=a[q].charCodeAt(0),d(c)||e(c)||f(c)?(0===o?d(c)?o=1:e(c)&&(o=4):1==o?e(c)?o=2:i(g,c)?o=5:b(q-1):2==o?f(c)?o=3:e(c)?h(g,c)||(b(q-1),o=4):(b(q-1),o=1):3==o?f(c)?i(g,c)||(b(q-1),o=1):d(c)?(b(q-1),o=1):e(c)&&(b(q-2),o=2):4==o?e(c)?h(g,c)?(b(q),o=0):b(q-1):(b(q-1),o=1):5==o&&(e(c)?(b(q-2),o=2):(b(q-1),o=1)),g=c):(b(q-1),b(q),o=0);return b(q-1),j.join("")},C=function(a,b){var c=A(a).join(""),d=A(b).join("");return c.indexOf(d)},D=function(a,b){function c(a){for(var b=0,c=0;b<h.length;++b)if(c+=h[b].length,c>a)return b}function d(a){for(var b=0,c=0;b<h.length;++b)if(c+=h[b].length,a+g.length<=c)return b}var e,f=A(a).join(""),g=A(b).join(""),h=A(a,!0),i=new RegExp(g,"gi"),j=[];if(!b.length)return[];for(;e=i.exec(f);)j.push(e.index);return j.map(function(a){return[c(a),d(a)]})};j.prototype.search=function(a){return A(a).join("").indexOf(this.disassembled)};var E=function(a){"object"==typeof a&&(a=a.join(""));var b=a.charCodeAt(a.length-1);if(g(b)){b-=t;var d=b%28;if(d>0)return!0}else if("undefined"!=typeof c(b))return!0;return!1},F={disassemble:A,d:A,assemble:B,a:B,search:C,rangeSearch:D,Searcher:j,endsWithConsonant:E,isHangul:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),g(a)},isComplete:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),g(a)},isConsonant:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),"undefined"!=typeof c(a)},isVowel:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),e(a)},isCho:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),d(a)},isJong:function(a){return"string"==typeof a&&(a=a.charCodeAt(0)),f(a)}};"function"==typeof define&&define.amd?define(function(){return F}):"undefined"!=typeof module?module.exports=F:window.Hangul=F}();