UNPKG

hunspell-reader

Version:
84 lines 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeLooseAccents = exports.removeAccents = exports.toRange = exports.escapeUnicodeCode = void 0; /** * Escape Unicode Characters * @param text * @param regexp * @returns */ function escapeUnicodeCode(text, regexp = /\p{M}/gu) { return text.replace(regexp, replaceWithUnicode); } exports.escapeUnicodeCode = escapeUnicodeCode; function replaceWithUnicode(substring) { const start = 0x20; const end = 0x7a; let val = ''; for (let i = 0; i < substring.length; ++i) { const char = substring[i]; const code = char.charCodeAt(0); if (code >= start && code <= end) { val += char; continue; } const hex = '0000' + code.toString(16); val += code < 256 ? '\\x' + hex.slice(-2) : '\\u' + hex.slice(-4); } return val; } /** * Converts a string of letters in ranges. * * `abcde` => `a-e` * * @param letters - sorted letters */ function toRange(letters, minLength = 4) { const chars = []; let begin = 0; let end = 0; let endChar = ''; const minDiff = Math.max(minLength - 2, 1); function fill() { if (!(end - begin > 1)) return; if (end - begin > minDiff) { chars.push('-'); return; } for (let code = begin + 1; code < end; code += 1) { chars.push(String.fromCharCode(code)); } } function pushRange() { fill(); chars.push(endChar); endChar = ''; } for (let i = 0; i < letters.length; ++i) { const letter = letters[i]; const code = letter.charCodeAt(0); if (code - end === 1) { end = code; endChar = letter; continue; } pushRange(); chars.push(letter); begin = code; end = code; } pushRange(); return chars.join(''); } exports.toRange = toRange; function removeAccents(text) { return removeLooseAccents(text.normalize('NFD')); } exports.removeAccents = removeAccents; function removeLooseAccents(text) { return text.replace(/\p{M}/gu, ''); } exports.removeLooseAccents = removeLooseAccents; //# sourceMappingURL=textUtils.js.map