@rzl-zone/utils-js
Version:
A modern, lightweight set of JavaScript utility functions with TypeScript support for everyday development, crafted to enhance code readability and maintainability.
102 lines (94 loc) • 3.56 kB
JavaScript
/*!
* ====================================================
* Rzl Utils-JS.
* ----------------------------------------------------
* Version: 3.11.0.
* Author: Rizalvin Dwiky.
* Repository: https://github.com/rzl-zone/utils-js.
* ====================================================
*/
;
var chunkWLOQQFDS_cjs = require('./chunk-WLOQQFDS.cjs');
var chunkSYHPSOUU_cjs = require('./chunk-SYHPSOUU.cjs');
var capitalizeFirst = (string, options = {
lowerCaseNextRest: true,
trim: false
}) => {
if (!chunkSYHPSOUU_cjs.isNonEmptyString(string)) return "";
if (!chunkSYHPSOUU_cjs.isPlainObject(options)) {
options = {};
}
const lowerCaseNextRest = options.lowerCaseNextRest !== false;
const trim = options.trim === true;
if (trim) string = string.trim();
return string[0].toUpperCase() + (lowerCaseNextRest ? string.slice(1).toLowerCase() : string.slice(1));
};
var capitalizeWords = (value, options = {
collapseSpaces: false,
trim: false
}) => {
if (!chunkSYHPSOUU_cjs.isNonEmptyString(value)) return "";
let result = value;
if (!chunkSYHPSOUU_cjs.isPlainObject(options)) {
options = {};
}
const collapseSpaces = options.collapseSpaces === true;
const trim = options.trim === true;
if (trim) {
result = result.trim();
}
if (collapseSpaces) {
const leadingSpaces = result.match(/^\s*/)?.[0] ?? "";
const trailingSpaces = result.match(/\s*$/)?.[0] ?? "";
result = result.trim().replace(/\s+/g, " ");
result = `${leadingSpaces}${result}${trailingSpaces}`;
}
return result.toLowerCase().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
};
function stripHtmlTags(input) {
if (!chunkSYHPSOUU_cjs.isString(input)) {
return void 0;
}
if (chunkWLOQQFDS_cjs.isEmptyString(input)) {
return "";
}
const stripped = input.replace(/<\/?[a-zA-Z][^<>]*\/?>/g, " ").trim();
const cleaned = stripped.replace(/\s+/g, " ").trim();
return cleaned;
}
var getInitialsName = (name) => {
if (!chunkSYHPSOUU_cjs.isNonEmptyString(name)) return "";
name = name.replace(/\s+/g, " ").trim();
const nameParts = name.split(" ");
if (nameParts.length > 1) {
return nameParts[0][0] + nameParts[1][0].toUpperCase();
}
return name.length > 1 ? name.substring(0, 2).toUpperCase() : (
// First two letters for single-word names
name[0].toUpperCase()
);
};
var replaceAt = (index, originalString, replaceTo) => {
if (!chunkSYHPSOUU_cjs.isNumber(index) || !chunkSYHPSOUU_cjs.isString(replaceTo) || !chunkSYHPSOUU_cjs.isString(originalString)) {
throw new TypeError(
`First parameter (\`index\`) must be of type \`number\`, second parameter (\`originalString\`) and third parameter (\`replaceTo\`) must be of type \`string\`, but received: "['index': \`${chunkSYHPSOUU_cjs.getPreciseType(
index
)}\`, 'originalString': \`${chunkSYHPSOUU_cjs.getPreciseType(
originalString
)}\`, 'replaceTo': \`${chunkSYHPSOUU_cjs.getPreciseType(replaceTo)}\`]".`
);
}
if (index < 0 || index >= originalString.length) {
throw new RangeError(
`First parameter (\`index\`) is out of range from second parameter (\`originalString\`).`
);
}
return originalString.slice(0, index) + // Extract before the index
replaceTo + // Insert replacement
originalString.slice(index + 1);
};
exports.capitalizeFirst = capitalizeFirst;
exports.capitalizeWords = capitalizeWords;
exports.getInitialsName = getInitialsName;
exports.replaceAt = replaceAt;
exports.stripHtmlTags = stripHtmlTags;