gemi-lib-hooks
Version:
Validadores de tipo para React.
141 lines (139 loc) • 3.8 kB
JavaScript
// hooks/usePropTypes/validadores/Validadores_String.tsx
function Build_Validadores_String() {
const validar = (valor) => {
if (typeof valor !== "string") {
return "Error: El valor proporcionado no es un string.";
}
return true;
};
function chainable(fn) {
return Object.assign(fn, {
required: validar.required,
min: validar.min,
max: validar.max,
exact: validar.exact,
onlyLetters: validar.onlyLetters,
onlyNumbers: validar.onlyNumbers,
alphanumeric: validar.alphanumeric,
regex: validar.regex
});
}
validar.required = (mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
if (!valor) {
if (mensaje) {
return mensaje;
}
return "Error: Este campo es requerido.";
}
return true;
});
};
validar.min = (longitud, mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (str.length < longitud) {
if (mensaje) {
return mensaje;
}
return `Error: Debe tener al menos ${longitud} caracteres.`;
}
return true;
});
};
validar.max = (longitud, mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (str.length > longitud) {
if (mensaje) {
return mensaje;
}
return `Error: No puede superar los ${longitud} caracteres.`;
}
return true;
});
};
validar.exact = (longitud, mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (str.length !== longitud) {
if (mensaje) {
return mensaje;
}
return `Error: Debe tener exactamente ${longitud} caracteres.`;
}
return true;
});
};
validar.onlyLetters = (mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (!/^[a-zA-Z]+$/.test(str)) {
if (mensaje) {
return mensaje;
}
return "Error: Solo se permiten letras.";
}
return true;
});
};
validar.onlyNumbers = (mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (!/^[0-9]+$/.test(str)) {
if (mensaje) {
return mensaje;
}
return "Error: Solo se permiten n\xFAmeros.";
}
return true;
});
};
validar.alphanumeric = (mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (!/^[a-zA-Z0-9]+$/.test(str)) {
if (mensaje) {
return mensaje;
}
return "Error: Solo se permiten letras y n\xFAmeros.";
}
return true;
});
};
validar.regex = (expresion, mensaje) => {
return chainable((valor) => {
const result = validar(valor);
if (typeof result === "string") return result;
const str = valor;
if (!expresion.test(str)) {
return mensaje;
}
return true;
});
};
return validar;
}
var Validadores_String = Build_Validadores_String();
// hooks/usePropTypes/validadores/Validadores.tsx
var Validadores = {
string: Validadores_String
};
var Validadores_default = Validadores;
export {
Validadores_default as Validadores
};