typescript-libraries
Version:
To install this library, run:
108 lines (107 loc) • 4.25 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TSString = void 0;
var TSString = /** @class */ (function () {
function TSString() {
}
TSString.slugify = function (text, join, cut) {
if (join === void 0) { join = '-'; }
if (cut) {
text = text.toString().split(cut)[0];
}
text = text.toString().replace(/[^\w\s]/g, '');
if (join === 'cc') {
return text.split(/\.|_|\s+|\d+/).map(function (v, i) {
v = v.toLowerCase();
if (i > 0) {
v = TSString.cfChar(v);
}
return v.length > 1 ? v : '';
}).filter(Boolean).join('');
}
return text.replace(/\s+/g, join).toLowerCase();
};
TSString.parseAndReplace = function (text, data, cb, masks) {
if (masks === void 0) { masks = ['braces']; }
if (data && Array.isArray(data)) {
data.forEach(function (v, i) { return text = text.replace(RegExp('\{' + i + '\}'.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), v); });
}
else if (data && typeof data === 'object') {
var keys = masks.reduce(function (a, k) { return Object.assign.apply(Object, __spreadArray([a], (text.match(TSString.masks(k, '\.\+\?')) || []).map(function (s) {
var _a;
return (_a = {}, _a[s.slice(1, -1)] = s, _a);
}), false)); }, {});
for (var k in keys) {
if (keys.hasOwnProperty(k)) {
var _a = k.split(/:(.+)/), key = _a[0], type = _a[1];
text = text.replace(new RegExp(keys[k].replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), cb ? cb(key, type) : data[key]);
}
}
}
masks.forEach(function (k) { return text = text.replace(TSString.masks(k), ''); });
return text;
};
TSString.masks = function (kind, key) {
if (key === void 0) { key = '\.\*'; }
if (kind === 'braces') {
return /(?:^|)\{([^{}]*)(\}(?!\}))/g;
}
else if (kind === 'parentheses') {
return new RegExp('\\(' + key + '\\)', 'g');
}
else if (kind === 'brackets') {
return new RegExp('\\[' + key + '\\]', 'g');
}
return new RegExp('%' + key + '%', 'g');
};
TSString.pad = function (string, length, char, append) {
if (length === void 0) { length = 2; }
if (char === void 0) { char = ' '; }
string = string.toString();
char = char.toString();
while (string.length < length) {
string = append ? string + char : char + string;
}
return string;
};
TSString.cfChar = function (string, char) {
string = string.toString();
if (char && string.indexOf(char) !== 0) {
string = char + string;
}
else {
string = string.charAt(0).toUpperCase() + string.slice(1);
}
return string;
};
TSString.paramToJson = function (text) {
return '{"' + text.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}';
};
TSString.isJson = function (text) {
return /^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''));
};
TSString.splitBy = function (term, match, kind) {
if (kind === void 0) { kind = 'last'; }
var index;
if (kind === 'last') {
index = term.lastIndexOf(match);
}
else {
index = term.indexOf(match);
}
return [term.substring(0, index), term.substring(index + 1)];
};
return TSString;
}());
exports.TSString = TSString;