diff --git a/README.md b/README.md index a199fca..c8bf952 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ | v1.0.5 | 2018.08.11 | inko.js에서 `package.json` 파일을 import하는 부분 제거 | [738](https://github.com/738) | | v1.0.6 | 2018.08.25 | [#12](https://github.com/738/inko/issues/12) hlhlhl -> ㅚㅗㅣㅗㅣ로 변환되는 버그 수정, [#14](https://github.com/738/inko/issues/14) rtk -> ꦵ로 변환되는 버그 수정, [#15](https://github.com/738/inko/issues/15) 복자음 가능 여부 옵션화, `config` 함수 추가 | [algoshipda](https://github.com/algoshipda), [738](https://github.com/738) | | v1.0.7 | 2019.04.21 | [#22](https://github.com/738/inko/issues/22) `is한글` 함수에서 "가" ~ "긯" 범위를 한글로 인식하지 않는 버그 수정 | [738](https://github.com/738), [EntryDark](https://github.com/EntryDark) | +| v1.1.0 | 2019.04.22 | [#6](https://github.com/738/inko/issues/6) index.d.ts 지원, [#21](https://github.com/738/inko/issues/21) circleci 연동 | [738](https://github.com/738) | ## Installation @@ -55,7 +56,7 @@ yarn add inko CDN ```html - + ``` Bower diff --git a/bower.json b/bower.json index 266f0a6..ef0d26e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "inko", - "version": "1.0.7", + "version": "1.1.0", "description": "영타를 한글로 쳤을 때, 혹은 한타를 영어로 변환해주는 기능을 가진 자바스크립트 오픈소스 라이브러리입니다.", "main": "inko.js", "authors": [ diff --git a/examples/example.html b/examples/example.html index 854a88d..571e2d4 100644 --- a/examples/example.html +++ b/examples/example.html @@ -3,7 +3,7 @@ - + example diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 718d37b..e217cb4 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -20,7 +20,7 @@ gulp.task('watch', () => { gulp.task('build', (cb) => { pump([gulp.src('index.js'), sourcemaps.init(), - rename('index.min.js'), uglify(), sourcemaps.write('.'), + rename('inko.min.js'), uglify(), sourcemaps.write('.'), gulp.dest('./'), ], cb); }) diff --git a/index.js b/index.js index 526a1f3..027c223 100644 --- a/index.js +++ b/index.js @@ -68,7 +68,7 @@ option.allowDoubleConsonant : false; } - Inko.prototype.VERSION = '1.0.7'; + Inko.prototype.VERSION = '1.1.0'; Inko.prototype.en2ko = function (input, _option) { var option = _option || {}; diff --git a/inko.min.js b/inko.min.js new file mode 100644 index 0000000..8faaca1 --- /dev/null +++ b/inko.min.js @@ -0,0 +1,2 @@ +!function(){var n="rRseEfaqQtTdwWczxvgASDFGZXCVkoiOjpuPhynbmlYUIHJKLBNM",e="ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅁㄴㅇㄹㅎㅋㅌㅊㅍㅏㅐㅑㅒㅓㅔㅕㅖㅗㅛㅜㅠㅡㅣㅛㅕㅑㅗㅓㅏㅣㅠㅜㅡ",i="ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ",f="ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ",o="ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ",d=44032,t=function(n){for(var e={},i=0;i=28};function a(n){var e=n||{};return this._allowDoubleConsonant=void 0!==e.allowDoubleConsonant&&e.allowDoubleConsonant,this}a.prototype.config=function(n){var e=n||{};this._allowDoubleConsonant=void 0!==e.allowDoubleConsonant&&e.allowDoubleConsonant},a.prototype.VERSION="1.1.0",a.prototype.en2ko=function(n,d){var r=d||{},a=void 0!==r.allowDoubleConsonant?r.allowDoubleConsonant:this._allowDoubleConsonant,l=this,p=[0,1,1,2,2,2,3,3,4,4,5],s=[[1,1,2,2],[3,1,4,4],[1,1,5,2],[3,1,4,-1],[6,1,7,2],[1,1,2,2],[9,1,4,4],[9,1,2,2],[1,1,4,4],[10,1,4,4],[1,1,4,4]],h=function(n){return n[n.length-1]},c=function(n){var d=[];if(n.forEach(function(n,i){var f=e[n];0!==i&&u(h(d)[0])===u(f)||d.push([]),h(d).push(f)}),1===(d=d.map(function(n){var e=n.join("");return x[e]||O[e]||e})).length)return d[0];var t=[i,f,o],r=d.map(function(n,e){return t[e].indexOf(n)});return r.length<3&&r.push(-1),l.한글생성.apply(l,r)};return function(){for(var i,f,o=n.length,d=-1,r=[],l=0,h=[],v=function(){h.length>0&&r.push(c(h)),h=[]},w=0;w=d&&r<=55203||r>=12593&&r<=12643?f=this.한글분리(t):(i+=t,f=[-1,-1,-1,-1,-1]);for(var x=0;x=d&&t<=55203){var r=Math.floor((t-d)/588),x=Math.floor((t-d-588*r)/28),O=t-d-588*r-28*x-1,u=x,a=-1,l=O,p=-1;return x==f.indexOf("ㅘ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅏ")):x==f.indexOf("ㅙ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅐ")):x==f.indexOf("ㅚ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅣ")):x==f.indexOf("ㅝ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅓ")):x==f.indexOf("ㅞ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅔ")):x==f.indexOf("ㅟ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅣ")):x==f.indexOf("ㅢ")&&(u=e.indexOf("ㅡ"),a=e.indexOf("ㅣ")),O==o.indexOf("ㄳ")?(l=e.indexOf("ㄱ"),p=e.indexOf("ㅅ")):O==o.indexOf("ㄵ")?(l=e.indexOf("ㄴ"),p=e.indexOf("ㅈ")):O==o.indexOf("ㄶ")?(l=e.indexOf("ㄴ"),p=e.indexOf("ㅎ")):O==o.indexOf("ㄺ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㄱ")):O==o.indexOf("ㄻ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅁ")):O==o.indexOf("ㄼ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅂ")):O==o.indexOf("ㄽ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅅ")):O==o.indexOf("ㄾ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅌ")):O==o.indexOf("ㄿ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅍ")):O==o.indexOf("ㅀ")?(l=e.indexOf("ㄹ"),p=e.indexOf("ㅎ")):O==o.indexOf("ㅄ")&&(l=e.indexOf("ㅂ"),p=e.indexOf("ㅅ")),-1===a&&(u=e.indexOf(f[x])),-1===p&&(l=e.indexOf(o[O])),[r,u,a,l,p]}if(t>=12593&&t<=12643){if(i.indexOf(n)>-1)return[r=e.indexOf(n),-1,-1,-1,-1];if(f.indexOf(n)>-1){u=x=f.indexOf(n),a=-1;return x==f.indexOf("ㅘ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅏ")):x==f.indexOf("ㅙ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅐ")):x==f.indexOf("ㅚ")?(u=e.indexOf("ㅗ"),a=e.indexOf("ㅣ")):x==f.indexOf("ㅝ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅓ")):x==f.indexOf("ㅞ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅔ")):x==f.indexOf("ㅟ")?(u=e.indexOf("ㅜ"),a=e.indexOf("ㅣ")):x==f.indexOf("ㅢ")&&(u=e.indexOf("ㅡ"),a=e.indexOf("ㅣ")),-1===a&&(u=e.indexOf(f[x])),[-1,u,a,-1,-1]}}return[-1,-1,-1,-1,-1]},a.prototype.is한글=function(n){if(n.length>1)throw new Error("한 글자가 아닙니다.");return/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(n)},"undefined"!=typeof exports&&("undefined"!=typeof module&&module.exports&&(exports=module.exports=a),exports.Inko=a),"function"==typeof define&&define.amd&&define([],function(){return a}),"undefined"!=typeof importScripts&&(inko=new a,self.Inko=a),"object"==typeof window&&"object"==typeof window.document&&(window.Inko=a,window.inko=new a)}(); +//# sourceMappingURL=inko.min.js.map diff --git a/inko.min.js.map b/inko.min.js.map new file mode 100644 index 0000000..277a3d4 --- /dev/null +++ b/inko.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["inko.min.js"],"names":["영어","한글","초성","중성","종성","가","영어index","en","x","i","length","한글index","kr","connectableConsonant","ㄱㅅ","ㄴㅈ","ㄴㅎ","ㄹㄱ","ㄹㅁ","ㄹㅂ","ㄹㅅ","ㄹㅌ","ㄹㅍ","ㄹㅎ","ㅂㅅ","connectableVowel","ㅗㅏ","ㅗㅐ","ㅗㅣ","ㅜㅓ","ㅜㅔ","ㅜㅣ","ㅡㅣ","isVowel","e","Inko","_option","option","this","_allowDoubleConsonant","allowDoubleConsonant","prototype","config","VERSION","en2ko","input","self","stateLength","transitions","last","list","combine","arr","group","forEach","cur","h","push","map","w","join","charSet","code","indexOf","한글생성","apply","c","lastIsVowel","result","state","tmp","flush","chr","transition","nxtState","diff","splice","ko2en","undefined","_분리","_한글","_코드","charCodeAt","한글분리","j","초","중","종","String","fromCharCode","코드","Math","floor","중1","중2","종1","종2","is한글","char","Error","test","exports","module","define","amd","importScripts","inko","window","document"],"mappings":"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","file":"inko.min.js","sourcesContent":["// (c) 2018 Jon Jee\n// Inko may be freely distributed or modified under the MIT license.\n\n(function () {\n // constants\n var 영어 = \"rRseEfaqQtTdwWczxvgASDFGZXCVkoiOjpuPhynbmlYUIHJKLBNM\"; // 33 + 19개\n var 한글 = \"ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅁㄴㅇㄹㅎㅋㅌㅊㅍㅏㅐㅑㅒㅓㅔㅕㅖㅗㅛㅜㅠㅡㅣㅛㅕㅑㅗㅓㅏㅣㅠㅜㅡ\"; // 33 + 19개\n var 초성 = \"ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ\"; // 19개\n var 중성 = \"ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ\"; // 21개\n var 종성 = \"ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ\"; // 27개\n var 첫모음 = 28;\n var 가 = 44032;\n var 힣 = 55203;\n var ㄱ = 12593;\n var ㅣ = 12643;\n\n var 영어index = (function (en) {\n var x = {};\n for (var i = 0; i < en.length; ++i) x[en[i]] = i;\n return x;\n }(영어));\n\n var 한글index = (function (kr) {\n var x = {};\n for (var i = 0; i < kr.length; ++i) x[kr[i]] = i;\n return x;\n }(한글));\n\n var connectableConsonant = {\n 'ㄱㅅ': 'ㄳ',\n 'ㄴㅈ': 'ㄵ',\n 'ㄴㅎ': 'ㄶ',\n 'ㄹㄱ': 'ㄺ',\n 'ㄹㅁ': 'ㄻ',\n 'ㄹㅂ': 'ㄼ',\n 'ㄹㅅ': 'ㄽ',\n 'ㄹㅌ': 'ㄾ',\n 'ㄹㅍ': 'ㄿ',\n 'ㄹㅎ': 'ㅀ',\n 'ㅂㅅ': 'ㅄ'\n };\n\n var connectableVowel = {\n 'ㅗㅏ': 'ㅘ',\n 'ㅗㅐ': 'ㅙ',\n 'ㅗㅣ': 'ㅚ',\n 'ㅜㅓ': 'ㅝ',\n 'ㅜㅔ': 'ㅞ',\n 'ㅜㅣ': 'ㅟ',\n 'ㅡㅣ': 'ㅢ'\n };\n\n var isVowel = function (e) {\n return 한글index[e] >= 첫모음;\n };\n\n // constructor\n function Inko(_option) {\n var option = _option || {};\n this._allowDoubleConsonant = typeof option.allowDoubleConsonant !== 'undefined' ?\n option.allowDoubleConsonant : false;\n return this;\n }\n\n Inko.prototype.config = function(_option) {\n var option = _option || {};\n this._allowDoubleConsonant = typeof option.allowDoubleConsonant !== 'undefined' ?\n option.allowDoubleConsonant : false;\n }\n\n Inko.prototype.VERSION = '1.1.0';\n\n Inko.prototype.en2ko = function (input, _option) {\n var option = _option || {};\n\n var allowDoubleConsonant =\n typeof option.allowDoubleConsonant !== 'undefined' ?\n option.allowDoubleConsonant : this._allowDoubleConsonant;\n var self = this;\n var stateLength = [0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5];\n var transitions = [\n [1, 1, 2, 2], // 0, EMPTY\n [3, 1, 4, 4], // 1, 자\n [1, 1, 5, 2], // 2, 모\n [3, 1, 4, -1], // 3, 자자\n [6, 1, 7, 2], // 4, 자모\n [1, 1, 2, 2], // 5, 모모\n [9, 1, 4, 4], // 6, 자모자\n [9, 1, 2, 2], // 7, 자모모\n [1, 1, 4, 4], // 8, 자모자자\n [10, 1, 4, 4],// 9, 자모모자\n [1, 1, 4, 4], // 10, 자모모자자\n ];\n\n var last = function (list) {\n return list[list.length - 1];\n };\n\n var combine = function (arr) {\n var group = [];\n arr.forEach(function (cur, i) {\n var h = 한글[cur];\n if (i === 0 || isVowel(last(group)[0]) !== isVowel(h)) {\n group.push([]);\n }\n last(group).push(h);\n });\n\n group = group.map(function connect(e) {\n var w = e.join('');\n return connectableConsonant[w] || connectableVowel[w] || w;\n });\n\n if (group.length === 1) return group[0];\n\n var charSet = [초성, 중성, 종성];\n var code = group.map(function (w, i) {\n return charSet[i].indexOf(w);\n });\n\n if (code.length < 3) code.push(-1);\n\n return self.한글생성.apply(self, code);\n };\n\n return (function () {\n var length = input.length;\n var last = -1;\n var result = [];\n var state = 0;\n var tmp = [];\n\n var flush = function () {\n if (tmp.length > 0) result.push(combine(tmp));\n tmp = [];\n };\n\n for (var i = 0; i < length; ++i) {\n var chr = input[i];\n var cur = 영어index[chr];\n if (typeof cur === 'undefined') {\n state = 0;\n flush();\n result.push(chr);\n } else {\n var transition = (function () {\n var c = (한글[last] || '') + 한글[cur];\n var lastIsVowel = isVowel(한글[last]);\n var curIsVowel = isVowel(한글[cur]);\n if (!curIsVowel) {\n if (lastIsVowel) {\n return 'ㄸㅃㅉ'.indexOf(한글[cur]) === -1 ? 0 : 1;\n }\n if (state === 1 && !allowDoubleConsonant) return 1;\n return connectableConsonant[c] ? 0 : 1;\n } else if (lastIsVowel) {\n return connectableVowel[c] ? 2 : 3;\n }\n return 2;\n }());\n var nxtState = transitions[state][transition];\n tmp.push(cur);\n var diff = tmp.length - stateLength[nxtState];\n if (diff) result.push(combine(tmp.splice(0, diff)));\n state = nxtState;\n last = cur;\n }\n }\n flush();\n return result.join('');\n }());\n };\n\n Inko.prototype.ko2en = function (input) {\n var result = '';\n if (input === '' || input === undefined) return result;\n var _분리 = [-1, -1, -1, -1, -1];\n\n for (var i = 0; i < input.length; i++) {\n var _한글 = input[i];\n var _코드 = _한글.charCodeAt();\n // 가 ~ 힣 사이에 있는 한글이라면\n if ((_코드 >= 가 && _코드 <= 힣) || (_코드 >= ㄱ && _코드 <= ㅣ)) {\n _분리 = this.한글분리(_한글);\n }\n // 한글이 아니라면\n else {\n result += _한글;\n // 분리 배열 초기화\n _분리 = [-1, -1, -1, -1, -1];\n }\n\n for (var j = 0; j < _분리.length; j++) {\n if (_분리[j] !== -1)\n result += 영어[_분리[j]];\n }\n }\n return result;\n }\n\n // 초성, 중성, 종성의 charCode를 받아서 합친 한글의 charCode를 반환함\n Inko.prototype.한글생성 = function (초, 중, 종) {\n return String.fromCharCode(44032 + 초 * 588 + 중 * 28 + 종 + 1);\n }\n\n // 한글 입력값으로 받아서 초성, 중성, 종성 분리해줌\n Inko.prototype.한글분리 = function (_한글) {\n var 코드 = _한글.charCodeAt();\n\n if (코드 >= 가 && 코드 <= 힣) {\n var 초 = Math.floor((코드 - 가) / 588);\n var 중 = Math.floor((코드 - 가 - 초 * 588) / 28);\n var 종 = 코드 - 가 - 초 * 588 - 중 * 28 - 1;\n var 중1 = 중, 중2 = -1, 종1 = 종, 종2 = -1;\n\n if (중 == 중성.indexOf(\"ㅘ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅏ\");\n else if (중 == 중성.indexOf(\"ㅙ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅐ\");\n else if (중 == 중성.indexOf(\"ㅚ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅣ\");\n else if (중 == 중성.indexOf(\"ㅝ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅓ\");\n else if (중 == 중성.indexOf(\"ㅞ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅔ\");\n else if (중 == 중성.indexOf(\"ㅟ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅣ\");\n else if (중 == 중성.indexOf(\"ㅢ\")) 중1 = 한글.indexOf(\"ㅡ\"), 중2 = 한글.indexOf(\"ㅣ\");\n\n if (종 == 종성.indexOf(\"ㄳ\")) 종1 = 한글.indexOf(\"ㄱ\"), 종2 = 한글.indexOf(\"ㅅ\");\n else if (종 == 종성.indexOf(\"ㄵ\")) 종1 = 한글.indexOf(\"ㄴ\"), 종2 = 한글.indexOf(\"ㅈ\");\n else if (종 == 종성.indexOf(\"ㄶ\")) 종1 = 한글.indexOf(\"ㄴ\"), 종2 = 한글.indexOf(\"ㅎ\");\n else if (종 == 종성.indexOf(\"ㄺ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㄱ\");\n else if (종 == 종성.indexOf(\"ㄻ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅁ\");\n else if (종 == 종성.indexOf(\"ㄼ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅂ\");\n else if (종 == 종성.indexOf(\"ㄽ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅅ\");\n else if (종 == 종성.indexOf(\"ㄾ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅌ\");\n else if (종 == 종성.indexOf(\"ㄿ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅍ\");\n else if (종 == 종성.indexOf(\"ㅀ\")) 종1 = 한글.indexOf(\"ㄹ\"), 종2 = 한글.indexOf(\"ㅎ\");\n else if (종 == 종성.indexOf(\"ㅄ\")) 종1 = 한글.indexOf(\"ㅂ\"), 종2 = 한글.indexOf(\"ㅅ\");\n\n // 복모음이 아니라면\n if (중2 === -1) 중1 = 한글.indexOf(중성[중]);\n\n // 복자음이 아니라면\n if (종2 === -1) 종1 = 한글.indexOf(종성[종]);\n\n return [초, 중1, 중2, 종1, 종2];\n } else if (코드 >= ㄱ && 코드 <= ㅣ) {\n if (초성.indexOf(_한글) > -1) {\n var 초 = 한글.indexOf(_한글);\n return [초, -1, -1, -1, -1];\n } else if (중성.indexOf(_한글) > -1) {\n var 중 = 중성.indexOf(_한글);\n var 중1 = 중, 중2 = -1;\n if (중 == 중성.indexOf(\"ㅘ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅏ\");\n else if (중 == 중성.indexOf(\"ㅙ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅐ\");\n else if (중 == 중성.indexOf(\"ㅚ\")) 중1 = 한글.indexOf(\"ㅗ\"), 중2 = 한글.indexOf(\"ㅣ\");\n else if (중 == 중성.indexOf(\"ㅝ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅓ\");\n else if (중 == 중성.indexOf(\"ㅞ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅔ\");\n else if (중 == 중성.indexOf(\"ㅟ\")) 중1 = 한글.indexOf(\"ㅜ\"), 중2 = 한글.indexOf(\"ㅣ\");\n else if (중 == 중성.indexOf(\"ㅢ\")) 중1 = 한글.indexOf(\"ㅡ\"), 중2 = 한글.indexOf(\"ㅣ\");\n\n // 복모음이 아니라면\n if (중2 === -1) 중1 = 한글.indexOf(중성[중]);\n\n return [-1, 중1, 중2, -1, -1];\n }\n }\n return [-1, -1, -1, -1, -1];\n }\n\n Inko.prototype.is한글 = function (char) {\n if (char.length > 1) throw new Error(\"한 글자가 아닙니다.\");\n return /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(char);\n }\n\n // CommonJS module\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = Inko;\n }\n exports.Inko = Inko;\n }\n\n // Register as an anonymous AMD module\n if (typeof define === 'function' && define.amd) {\n define([], function () {\n return Inko;\n });\n }\n\n // if there is a importsScrips object define chance for worker\n // allows worker to use full Chance functionality with seed\n if (typeof importScripts !== 'undefined') {\n inko = new Inko();\n self.Inko = Inko;\n }\n\n // If there is a window object, that at least has a document property,\n // instantiate and define chance on the window\n if (typeof window === \"object\" && typeof window.document === \"object\") {\n window.Inko = Inko;\n window.inko = new Inko();\n }\n})();\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 7ac8b7f..7d0bb87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "inko", - "version": "1.0.7", + "version": "1.1.0", "description": "영타를 한글로 쳤을 때, 혹은 한타를 영어로 변환해주는 기능을 가진 자바스크립트 오픈소스 라이브러리입니다.", "bugs": { "url": "https://github.com/738/inko/issues",