UNPKG

diginext-utils

Version:
162 lines (161 loc) 8.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clearUnicodeCharacters = exports.capitalizeName = exports.capitalize = exports.titleize = exports.toLowerCase = exports.toUpperCase = exports.makeString = exports.getBetween = void 0; const object_1 = require("../object"); //prettier-ignore const char_map = { À: "A", Á: "A", Â: "A", Ã: "A", Ä: "A", Å: "A", Æ: "AE", Ç: "C", È: "E", É: "E", Ê: "E", Ë: "E", Ì: "I", Í: "I", Î: "I", Ï: "I", Ð: "D", Ñ: "N", Ò: "O", Ó: "O", Ô: "O", Õ: "O", Ö: "O", Ő: "O", Ø: "O", Ù: "U", Ú: "U", Û: "U", Ű: "U", Ý: "Y", Þ: "TH", ß: "ss", à: "a", á: "a", â: "a", ã: "a", ä: "a", å: "a", æ: "ae", è: "e", é: "e", ê: "e", ë: "e", ì: "i", í: "i", î: "i", ï: "i", ð: "d", ñ: "n", ò: "o", ó: "o", ô: "o", õ: "o", ö: "o", ő: "o", ø: "o", ù: "u", ú: "u", û: "u", ű: "u", ý: "y", þ: "th", ÿ: "y", "©": "(c)", Γ: "G", Δ: "D", Θ: "8", Λ: "L", Ξ: "3", Π: "P", Σ: "S", Φ: "F", Ψ: "PS", Ω: "W", Ά: "A", Έ: "E", Ί: "I", Ό: "O", Ύ: "Y", Ή: "H", Ώ: "W", Ϊ: "I", Ϋ: "Y", β: "b", "γ": "y", δ: "d", ε: "e", ζ: "z", η: "h", θ: "8", ι: "i", κ: "k", λ: "l", μ: "m", ν: "n", ξ: "3", ο: "o", π: "p", ρ: "r", σ: "s", τ: "t", υ: "y", φ: "f", χ: "x", ψ: "ps", ω: "w", ά: "a", έ: "e", ί: "i", ό: "o", ύ: "y", ή: "h", ώ: "w", ς: "s", ϊ: "i", ΰ: "y", ϋ: "y", ΐ: "i", Ş: "S", İ: "I", Ü: "U", Ğ: "G", ş: "s", ı: "i", ç: "c", ü: "u", ğ: "g", А: "A", Б: "B", В: "V", Г: "G", Д: "D", Е: "E", Ё: "Yo", Ж: "Zh", З: "Z", И: "I", Й: "J", К: "K", Л: "L", М: "M", Н: "N", О: "O", П: "P", Р: "R", С: "S", Т: "T", У: "U", Ф: "F", Х: "H", Ц: "C", Ч: "Ch", Ш: "Sh", Щ: "Sh", Ъ: "", Ы: "Y", Ь: "", Э: "E", Ю: "Yu", Я: "Ya", а: "a", б: "b", в: "v", г: "g", д: "d", е: "e", ё: "yo", ж: "zh", з: "z", и: "i", й: "j", к: "k", л: "l", м: "m", н: "n", о: "o", п: "p", р: "r", с: "s", т: "t", у: "u", ф: "f", х: "h", ц: "c", ч: "ch", ш: "sh", щ: "sh", ъ: "", ы: "y", ь: "", э: "e", ю: "yu", я: "ya", Є: "Ye", І: "I", Ї: "Yi", Ґ: "G", є: "ye", і: "i", ї: "yi", ґ: "g", Č: "C", Ď: "D", Ě: "E", Ň: "N", Ř: "R", Š: "S", Ť: "T", Ů: "U", Ž: "Z", č: "c", ď: "d", ě: "e", ň: "n", ř: "r", š: "s", ť: "t", ů: "u", ž: "z", Ą: "A", Ć: "C", Ę: "e", Ł: "L", Ń: "N", Ś: "S", Ź: "Z", Ż: "Z", ą: "a", ć: "c", ę: "e", ł: "l", ń: "n", ś: "s", ź: "z", ż: "z", Ā: "A", Ē: "E", Ģ: "G", Ī: "i", Ķ: "k", Ļ: "L", Ņ: "N", Ū: "u", ā: "a", ē: "e", ģ: "g", ī: "i", ķ: "k", ļ: "l", ņ: "n", ū: "u" }; /** * Get string between str1 and str2 from text */ const getBetween = (text, str1, str2 = "") => { if (!text) return ""; if (text.indexOf(str1) <= -1) return ""; const firstIndex = text.indexOf(str1) + str1.length; const secondIndex = str2 ? text.indexOf(str2, firstIndex) : text.length; return text.substring(firstIndex, secondIndex); }; exports.getBetween = getBetween; /** * Convert object to string */ const makeString = (object = "") => { /// Ensure some object is a coerced to a string if ((0, object_1.isNull)(object)) return ""; return "" + object; }; exports.makeString = makeString; /** * toUpperCase */ const toUpperCase = (str = "") => { return (0, exports.makeString)(str).toUpperCase(); }; exports.toUpperCase = toUpperCase; /** * toLowerCase */ const toLowerCase = (str = "") => { return (0, exports.makeString)(str).toLowerCase(); }; exports.toLowerCase = toLowerCase; /** * toLowerCase * @param {*} str * @return {string} */ const titleize = (str = "") => { const regString = new RegExp(/(?:^|\s|-)\S/g); return (0, exports.toLowerCase)(str).replace(regString, function (c) { return c.toUpperCase(); }); }; exports.titleize = titleize; /** * Convert only first charater to UpperCase */ const capitalize = (str, lowercaseRest = 1) => { str = (0, exports.makeString)(str); const remainingChars = !lowercaseRest ? str.slice(1) : str.slice(1).toLowerCase(); return str.charAt(0).toUpperCase() + remainingChars; }; exports.capitalize = capitalize; /** * Convert first character from every single words to UpperCase */ const capitalizeName = (str) => { str = (0, exports.makeString)(str); str = str.replace(/-/g, " "); str = str.trim(); str = str.replace(/^\s+|\s+$/gm, ""); str = str.toLowerCase(); const arr = str.split(" "); str = arr .map((item) => { return (0, exports.capitalize)(item); }) .filter((x) => x) .join(" "); return str; }; exports.capitalizeName = capitalizeName; const clearUnicodeCharacters = (s, opt = {}) => { s = (0, exports.makeString)(s); var defaults = { delimiter: " ", lowercase: true, replacements: {}, transliterate: typeof XRegExp === "undefined" ? true : false, }; // Merge options for (var k in defaults) { if (!opt.hasOwnProperty(k)) { opt[k] = defaults[k]; } } // Vietnamese s = s.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, "a"); s = s.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, "e"); s = s.replace(/i|í|ì|ỉ|ĩ|ị/gi, "i"); s = s.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, "o"); s = s.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, "u"); s = s.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, "y"); s = s.replace(/đ/gi, "d"); s = "@" + s + "@"; s = s.replace(/\@\-|\-\@|\@/gi, ""); // Make custom replacements for (var k in opt.replacements) { s = s.replace(RegExp(k, "g"), opt.replacements[k]); } // Transliterate characters to ASCII if (opt.transliterate) { for (var k in char_map) { s = s.replace(RegExp(k, "g"), char_map[k]); } } // Replace non-alphanumeric characters with our delimiter var alnum = typeof XRegExp === "undefined" ? RegExp("[^a-z0-9]+", "ig") : XRegExp("[^\\p{L}\\p{N}]+", "ig"); s = s.replace(alnum, opt.delimiter); // Remove duplicate delimiters s = s.replace(RegExp("[" + opt.delimiter + "]{2,}", "g"), opt.delimiter); // Truncate slug to max. characters s = s.substring(0, opt.limit); // Remove delimiter from ends s = s.replace(RegExp("(^" + opt.delimiter + "|" + opt.delimiter + "$)", "g"), ""); return opt.lowercase ? s.toLowerCase() : s; }; exports.clearUnicodeCharacters = clearUnicodeCharacters; const makeDaySlug_1 = require("./makeDaySlug"); const generateUUID_1 = require("./generateUUID"); const random_1 = require("./random"); const formatNumber_1 = require("./formatNumber"); const generatePassword_1 = require("./generatePassword"); const trimNull_1 = require("./trimNull"); const url_1 = require("./url"); const xstring = { getBetween: exports.getBetween, makeString: exports.makeString, makeDaySlug: makeDaySlug_1.makeDaySlug, toUpperCase: exports.toUpperCase, toLowerCase: exports.toLowerCase, titleize: exports.titleize, capitalize: exports.capitalize, capitalizeName: exports.capitalizeName, clearUnicodeCharacters: exports.clearUnicodeCharacters, generateUUID: generateUUID_1.generateUUID, randAllCharacterByLength: random_1.randAllCharacterByLength, randomStringByLength: random_1.randomStringByLength, formatNumber: formatNumber_1.formatNumber, generatePassword: generatePassword_1.generatePassword, trimNull: trimNull_1.trimNull, addQueryParam: url_1.addQueryParam, getUrlParams: url_1.getUrlParams, isLink: url_1.isLink, getFileNameWithoutExtension: url_1.getFileNameWithoutExtension, getFileNameWithExtension: url_1.getFileNameWithExtension, getFileExtension: url_1.getFileExtension, isImage: url_1.isImage, }; exports.default = xstring;