prettyutils
Version:
Utility functions to parse, validate and generate data
52 lines • 1.78 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
class RutUtil {
constructor() {
this.clean = (rut) => {
if (!rut)
return '';
return rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase();
};
this.format = (rut) => {
if (!this.clean(rut))
return '';
rut = this.clean(rut);
let result = rut;
if (rut.length > 1) {
result = rut.slice(-4, -1) + '-' + rut.substr(rut.length - 1);
for (let i = 4; i < rut.length; i += 3) {
result = rut.slice(-3 - i, -i) + '.' + result;
}
}
return result;
};
this.calculateDv = (rut) => {
if (!this.clean(rut))
return '';
let suma = 0;
const rutReversa = this.clean(rut).split('').reverse();
for (let i = 0, j = 2; i < rutReversa.length; i++, j < 7 ? j++ : (j = 2)) {
suma += parseInt(rutReversa[i]) * j;
}
const resultado = 11 - (suma % 11);
if (resultado === 11)
return '0';
if (resultado === 10)
return 'K';
return String(resultado);
};
this.validate = (rut) => {
const rutSinFormato = this.clean(rut);
if (rutSinFormato) {
const rutSinDv = rutSinFormato.slice(0, -1);
const rutDv = rutSinFormato.split('').pop().toUpperCase();
return this.calculateDv(rutSinDv) === rutDv;
}
else {
return false;
}
};
}
}
exports.default = RutUtil;
//# sourceMappingURL=Rut.js.map
;