uno-js
Version:
JS/TS common used functions, zero dependencies
37 lines (36 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sortNumericString = exports.sortComparer = exports.defaultStringFilter = exports.sanitizeNumericString = exports.stringTemplate = void 0;
const stringTemplate = (template, isPrefix) => {
if (typeof template === 'object') {
return (value, index = 0) => {
if (index > template.length - 1)
return value;
return isPrefix ? template[index] + value : value + template[index];
};
}
return (value) => (isPrefix ? template + value : value + template);
};
exports.stringTemplate = stringTemplate;
const sanitizeNumericString = (str) => Number(str.replace(/[^0-9.-]+/g, ''));
exports.sanitizeNumericString = sanitizeNumericString;
const defaultStringFilter = (search) => (element) => Boolean(element && String(element).toLocaleLowerCase().includes(search.toLocaleLowerCase()));
exports.defaultStringFilter = defaultStringFilter;
const sortComparer = (left, right) => left.trim().localeCompare(right.trim(), undefined, {
numeric: true,
sensitivity: 'base',
});
exports.sortComparer = sortComparer;
const sortNumericString = (a, b) => {
if ((a.includes('$') && b.includes('$')) || (a.includes('%') && b.includes('%'))) {
const numStrA = (0, exports.sanitizeNumericString)(a);
const numStrB = (0, exports.sanitizeNumericString)(b);
if (typeof numStrA === 'number' && typeof numStrB === 'number') {
const result = numStrA - numStrB;
if (result !== 0)
return result > 0 ? 1 : -1;
}
}
return (0, exports.sortComparer)(a, b);
};
exports.sortNumericString = sortNumericString;