/**
* Wraps text block validation logic with hard-coded limits.
*
* @param {string} text The text to validate.
* @param {object} limits An object containing validation limits.
* Example: { minLength: 5, maxLength: 100 }
* @returns {object} An object containing validation results:
* { isValid: boolean, message: string }
*/
function validateText(text, limits) {
if (typeof text !== 'string') {
return { isValid: false, message: "Input must be a string." };
}
let isValid = true;
let message = "";
if (limits.minLength && text.length < limits.minLength) {
isValid = false;
message = `Minimum length is ${limits.minLength}.`;
}
if (limits.maxLength && text.length > limits.maxLength) {
isValid = false;
message = `Maximum length is ${limits.maxLength}.`;
}
if (limits.pattern && !limits.pattern.test(text)) {
isValid = false;
message = limits.patternErrorMessage || "Invalid format.";
}
if (!isValid) {
return { isValid: false, message: message };
} else {
return { isValid: true, message: "" };
}
}
// Example usage:
// const text = "This is a test";
// const limits = { minLength: 5, maxLength: 20 };
// const result = validateText(text, limits);
// console.log(result); // Output: { isValid: true, message: '' }
// const text2 = "Short";
// const limits2 = {minLength: 10, maxLength: 20};
// const result2 = validateText(text2, limits2);
// console.log(result2); // Output: {isValid: false, message: 'Minimum length is 10.'}
Add your comment