identification-numbers
Version:
Provides utility methods to validate and generate various identification numbers such as NIP, REGON, PESEL, etc.
42 lines (34 loc) • 1.1 kB
JavaScript
var util = require('./util.js');
exports.pesel = function (value) {
var WEIGHTS = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3],
LENGTH = 11,
MODULO = 10;
var Pesel = function (value) {
this.value = value;
};
Pesel.prototype.decode = function () {
return {
ordinal: +this.value.substring(6, 10),
checksum: +this.value[10],
sex: (this.value[9] % 2 === 0 ? 'F' : 'M')
};
// TODO YEAR, MONTH, DAY
};
Pesel.prototype.isValid = function () {
if (util.isString(this.value) && this.value.length === LENGTH) {
var i, sum = 0, checksum, digits = [];
for (i = 0; i < WEIGHTS.length; i++) {
digits.push(+this.value[i]);
sum += digits[i] * WEIGHTS[i];
}
checksum = (10 - sum % MODULO) % 10;
return checksum === (+this.value[LENGTH - 1]);
}
return false;
};
Pesel.prototype.random = function () {
// FIXME Implement this guy
return 'ABC';
};
return new Pesel(value);
};