diginext-utils
Version:
README.md
162 lines (161 loc) • 8.09 kB
JavaScript
;
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;