1. /**
  2. * Wraps text block validation logic with hard-coded limits.
  3. *
  4. * @param {string} text The text to validate.
  5. * @param {object} limits An object containing validation limits.
  6. * Example: { minLength: 5, maxLength: 100 }
  7. * @returns {object} An object containing validation results:
  8. * { isValid: boolean, message: string }
  9. */
  10. function validateText(text, limits) {
  11. if (typeof text !== 'string') {
  12. return { isValid: false, message: "Input must be a string." };
  13. }
  14. let isValid = true;
  15. let message = "";
  16. if (limits.minLength && text.length < limits.minLength) {
  17. isValid = false;
  18. message = `Minimum length is ${limits.minLength}.`;
  19. }
  20. if (limits.maxLength && text.length > limits.maxLength) {
  21. isValid = false;
  22. message = `Maximum length is ${limits.maxLength}.`;
  23. }
  24. if (limits.pattern && !limits.pattern.test(text)) {
  25. isValid = false;
  26. message = limits.patternErrorMessage || "Invalid format.";
  27. }
  28. if (!isValid) {
  29. return { isValid: false, message: message };
  30. } else {
  31. return { isValid: true, message: "" };
  32. }
  33. }
  34. // Example usage:
  35. // const text = "This is a test";
  36. // const limits = { minLength: 5, maxLength: 20 };
  37. // const result = validateText(text, limits);
  38. // console.log(result); // Output: { isValid: true, message: '' }
  39. // const text2 = "Short";
  40. // const limits2 = {minLength: 10, maxLength: 20};
  41. // const result2 = validateText(text2, limits2);
  42. // console.log(result2); // Output: {isValid: false, message: 'Minimum length is 10.'}

Add your comment