@bcsdlab/utils
Version:
bcsdlab 프론트엔드 유틸 모음입니다.
8 lines (7 loc) • 14.8 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../node_modules/jongseong/dist/index.js", "../node_modules/josa/dist/josaPicker.js", "../node_modules/josa/dist/fillInJosa.js", "../node_modules/josa/dist/util.js", "../node_modules/josa/dist/index.js", "../src/index.ts", "../src/cn/index.ts", "../src/sha256/index.ts", "../src/josa/index.ts"],
"sourcesContent": ["'use strict';\n\n// A JongseongCode is an integer[0...27].\n// - Each code represents a tail consonants.\n// code | e.g.\n// -------+------\n// 0 | \uAC00\n// 1 | \uAC01\n// 2 | \uAC02\n// 3 | \uAC03\n// 4 | \uAC04\n// 5 | \uAC05\n// 6 | \uAC06\n// 7 | \uAC07\n// 8 | \uAC08\n// 9 | \uAC09\n// 10 | \uAC0A\n// 11 | \uAC0B\n// 12 | \uAC0C\n// 13 | \uAC0D\n// 14 | \uAC0E\n// 15 | \uAC0F\n// 16 | \uAC10\n// 17 | \uAC11\n// 18 | \uAC12\n// 19 | \uAC13\n// 20 | \uAC14\n// 21 | \uAC15\n// 22 | \uAC16\n// 23 | \uAC17\n// 24 | \uAC18\n// 25 | \uAC19\n// 26 | \uAC1A\n// 27 | \uAC1B\n\n// _codeForHangul :: string -> JongseongCode\n// Given a Hangul letter, computes its jongseong code.\n// Assume h is a single letter Hangul string (\uAC00-\uD7A3).\n// - 44032 (AC00) is the code point of \uAC00, which is the first Hangul letter.\n// - 28 = the number of the jongseongs + 1\nvar _codeForHangul = function _codeForHangul(h) {\n return (h.charCodeAt(0) - 44032) % 28;\n};\n\n// code :: string -> JongseongCode\n// Given a string of zeros, returns its jongseong code.\n// e.g. _codeForZeros('00') === 1 (100 = \uBC31)\n// the number |\n// of zeros |\n// -----------+-------\n// 1 | \uC2ED\n// 2 | \uBC31\n// 3 | \uCC9C\n// 4 ~ 7 | \uB9CC\n// 8 ~ 11 | \uC5B5\n// 12 ~ 15 | \uC870\n// 16 ~ 19 | \uACBD\n// 20 ~ 23 | \uD574\nvar _codeForZeros = function _codeForZeros(zs) {\n var n = zs.length;\n\n if (n === 1) {\n return 17;\n }\n if (n === 2 || n >= 8 && n <= 11) {\n return 1;\n }\n if (n >= 3 && n <= 7) {\n return 4;\n }\n if (n >= 12 && n <= 15 || n >= 20 && n <= 23) {\n return 0;\n }\n if (n >= 16 && n <= 19) {\n return 21;\n }\n\n throw new Error(\"It's too large.\");\n};\n\n// _codeForDigit :: string -> JongseongCode\n// Given a digit, returns its jongseong code.\n// Assume d is one of: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'\nvar _codeForDigit = function _codeForDigit(d) {\n return [21, 8, 0, 16, 0, 0, 1, 8, 8, 0][d];\n};\n\n// _codeForEnglish :: string -> JongseongCode\n// Given a two-letter English string, returns its jongseong code.\n// Assume e is a two-letter English string.\nvar _codeForEnglish = function _codeForEnglish(e) {\n return (/ck/i.test(e) ? 1 : /.n/i.test(e) ? 4 : /ne/i.test(e) ? 4 : /.l/i.test(e) ? 8 : /le/i.test(e) ? 8 : /.m/i.test(e) ? 16 : /ob/i.test(e) ? 17 : /.p/i.test(e) ? 17 : /et/i.test(e) ? 19 : /ng/i.test(e) ? 21 : /* else */0\n );\n};\n\n// _codeForEnglishInitial :: string -> JongseongCode\n// Given an English letter, returns its jongseong code.\n// Assume e is a single-letter English string.\nvar _codeForEnglishInitial = function _codeForEnglishInitial(e) {\n switch (e.toLowerCase()) {\n case 'l':\n case 'r':\n return 8;\n case 'm':\n return 16;\n case 'n':\n return 4;\n default:\n return 0;\n }\n};\n\n// code :: string -> JongseongCode\n// Computes the jongseong code of a given string.\n// If there isn't any recognizable letter in word, returns 0 (no jongseong).\nvar code = function code(word) {\n if (!word) {\n return 0;\n }\n\n // !!! Ignore letters inside parentheses.\n var w = word.replace(/\\([^)]*\\)$/, '');\n var last = w[w.length - 1];\n\n if (/[\uAC00-\uD7A3]/.test(last)) {\n return _codeForHangul(last);\n }\n\n if (/[1-9]0+$/.test(w)) {\n var zerosMatch = /0+$/.exec(w);\n\n return _codeForZeros(zerosMatch[0]);\n }\n\n if (/\\d/.test(last)) {\n return _codeForDigit(last);\n }\n\n if (/[a-z]{2}$/i.test(w)) {\n return _codeForEnglish(w.slice(w.length - 2, w.length));\n }\n\n if (/(?:^|[^a-z])[a-z]$/i.test(w)) {\n return _codeForEnglishInitial(last);\n }\n\n if (/(^|[^a-z])[a-z][^a-z]?$/i.test(w)) {\n return _codeForEnglishInitial(w[w.length - 2]);\n }\n\n return code(w.slice(0, w.length - 1));\n};\n\n// hasJongseong :: string -> boolean\n// Does the last letter of a given word have a jongseong?\nvar hasJongseong = function hasJongseong(w) {\n return code(w) !== 0;\n};\n\nmodule.exports = {\n _codeForHangul: _codeForHangul,\n _codeForZeros: _codeForZeros,\n _codeForDigit: _codeForDigit,\n _codeForEnglish: _codeForEnglish,\n _codeForEnglishInitial: _codeForEnglishInitial,\n code: code,\n hasJongseong: hasJongseong\n};", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.get = exports.makeJosaPicker = undefined;\n\nvar _jongseong = require('jongseong');\n\n// A Josa is one of:\n// - '\uC740' - '\uB294'\n// - '\uC774' - '\uAC00'\n// - '\uC744' - '\uB97C'\n// - '\uACFC' - '\uC640'\n// - '\uC774\uC5C8' - '\uC600'\n// - '\uC774\uC5B4' - '\uC5EC'\n// - '\uC774\uC5D0\uC694' - '\uC608\uC694'\n// - '\uC544' - '\uC57C'\n// - '\uC774'?\n// - '\uC73C\uB85C' - '\uB85C'\n\n// A JosaPicker is a fuction: string -> Josa\n// - Determines josa for a given word.\n\n// table : object\n// State. Manages the josa-pickers.\nvar table = {};\n\n// put : Josa * Josa * JosaPicker -> void\n// Effect. Puts f into table with two given names.\nvar put = function put(j1, j2, f) {\n table[j1] = f;\n\n if (j2) {\n table[j2] = f;\n }\n};\n\n// get : Josa -> JosaPicker\n// Given a josa, returns a josa-picker (if possible).\n// Effect. Searches table for a josa-picker with name josa.\nvar get = function get(j) {\n var f = table[j];\n\n if (!f) {\n throw new Error('Cannot handle this josa: ' + j);\n }\n\n return f;\n};\n\n// makeJosaPicker : Josa * Josa -> JosaPicker\n// Given two josa options, produces a josa-picker.\nvar makeJosaPicker = function makeJosaPicker(j1, j2) {\n return function (w) {\n return (0, _jongseong.hasJongseong)(w) ? j1.replace(/\\?$/, '') : j2;\n };\n};\n\n// install : Josa * Josa * JosaPicker? -> void\n// - j1 is for a word with a tail consonant.\n// - j2 is for a word with no tail consonant.\n// - f is an optional josa-picker for exceptional cases: '\uC73C\uB85C'\n// Effect. Sets up a josa-picker that chooses between j1 and j2.\nvar install = function install(j1, j2, f) {\n put(j1, j2, f || makeJosaPicker(j1, j2));\n};\n\ninstall('\uC740', '\uB294');\ninstall('\uC774', '\uAC00');\ninstall('\uC744', '\uB97C');\ninstall('\uACFC', '\uC640');\ninstall('\uC774\uC5C8', '\uC600');\ninstall('\uC774\uC5B4', '\uC5EC');\ninstall('\uC774\uC5D0\uC694', '\uC608\uC694');\ninstall('\uC544', '\uC57C');\ninstall('\uC774?', '');\ninstall('\uC73C\uB85C', '\uB85C', function (w) {\n return (0, _jongseong.code)(w) === 8 ? '\uB85C' : makeJosaPicker('\uC73C\uB85C', '\uB85C')(w);\n});\n\nexports.makeJosaPicker = makeJosaPicker;\nexports.get = get;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _josaPicker = require('./josaPicker');\n\n// fillInJosa : string -> string\n// Fills in the josa placeholders: \uCE5C\uAD6C#{\uC774} \uD559\uAD50#{\uC73C\uB85C} -> \uCE5C\uAD6C\uAC00 \uD559\uAD50\uB85C\nvar fillInJosa = function fillInJosa(str) {\n return str.replace(\n /* +++(___ ____ ____)#{---------} */\n /(\\S+(?:\\([^)]*\\))?)#\\{([^}]+)\\}/g, function (_, noun, josa) {\n return noun + (0, _josaPicker.get)(josa.trim())(noun);\n });\n};\n\nexports.default = fillInJosa;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeJosaify = exports.getJosaPicker = undefined;\n\nvar _josaPicker = require('./josaPicker');\n\n// A Josaify is a function: string -> string\n// - Produces a given word with a josa appended.\n\n// makeJosaify : Josa -> Josaify\n// Given a josa, produces a josaify.\nvar makeJosaify = function makeJosaify(josa) {\n return function (word) {\n return word + (0, _josaPicker.get)(josa)(word);\n };\n};\n\n// getJosaPicker : Josa -> JosaPicker\nvar getJosaPicker = _josaPicker.get;\n\nexports.getJosaPicker = getJosaPicker;\nexports.makeJosaify = makeJosaify;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeJosaify = exports.getJosaPicker = exports.josa = undefined;\n\nvar _fillInJosa = require('./fillInJosa');\n\nvar _fillInJosa2 = _interopRequireDefault(_fillInJosa);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.josa = _fillInJosa2.default;\nexports.getJosaPicker = _util.getJosaPicker;\nexports.makeJosaify = _util.makeJosaify;", "export * from './cn';\nexport * from './sha256'\nexport * from './josa';", "interface Classname {\n [key: string]: boolean;\n}\n\n/** \uC5EC\uB7EC \uAC1C\uC758 className\uC744 \uD569\uCE58\uB294 \uD568\uC218 */\nexport function cn(classes: Classname) {\n return Object.entries(classes)\n .filter(([, value]) => value)\n .map(([key]) => key)\n .join(' ');\n}\n", "/** sha256 \uC554\uD638\uD654\uB97C \uAC70\uCCD0 \uD574\uC2F1\uB41C \uAC12\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4. */\nexport async function sha256(message: string) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n\n // hash the message\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);\n\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n\n // convert bytes to hex string\n const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n}\n", "import {josa, makeJosaify, getJosaPicker} from 'josa';\n\nexport {josa, makeJosaify, getJosaPicker}"],
"mappings": "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",
"names": ["module", "_codeForHangul", "_codeForZeros", "_codeForDigit", "_codeForEnglish", "_codeForEnglishInitial", "code", "hasJongseong", "put", "get", "makeJosaPicker", "install", "fillInJosa", "josa", "makeJosaify", "josa", "getJosaPicker", "require_dist"]
}