summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-06-06 22:35:10 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-06-06 22:35:10 +0200
commit8ac7de8784f668abf12ba7718fd601a0ceb559d4 (patch)
tree6e4ef7c2e9d84d9db330a82b47c7a9508f2e7dc4
parentc482f056c69d9717dc6f648ab9163703e79f2514 (diff)
Reindent files to 2 spaces
-rw-r--r--south-african-id-parser.js212
-rw-r--r--test/test.js126
2 files changed, 169 insertions, 169 deletions
diff --git a/south-african-id-parser.js b/south-african-id-parser.js
index b51d081..9b6d23f 100644
--- a/south-african-id-parser.js
+++ b/south-african-id-parser.js
@@ -1,131 +1,131 @@
(function (global, factory) {
- 'use strict';
-
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- global.saIdParser = factory();
+ 'use strict';
+
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ global.saIdParser = factory();
}(this, (function () {
- 'use strict';
+ 'use strict';
+
+ return {
+ parse: parse,
+ validate: validate,
+ parseDateOfBirth: parseDateOfBirth,
+ parseIsMale: parseIsMale,
+ parseIsFemale: parseIsFemale,
+ parseIsSouthAfricanCitizen: parseIsSouthAfricanCitizen
+ };
+
+ function parse(idNumber) {
+ var isValid = validate(idNumber);
+ if (!isValid) {
+ return {
+ isValid: false
+ };
+ }
return {
- parse: parse,
- validate: validate,
- parseDateOfBirth: parseDateOfBirth,
- parseIsMale: parseIsMale,
- parseIsFemale: parseIsFemale,
- parseIsSouthAfricanCitizen: parseIsSouthAfricanCitizen
+ isValid: isValid,
+ dateOfBirth: parseDateOfBirth(idNumber),
+ isMale: parseIsMale(idNumber),
+ isFemale: parseIsFemale(idNumber),
+ isSouthAfricanCitizen: parseIsSouthAfricanCitizen(idNumber)
};
+ }
- function parse(idNumber) {
- var isValid = validate(idNumber);
- if (!isValid) {
- return {
- isValid: false
- };
- }
-
- return {
- isValid: isValid,
- dateOfBirth: parseDateOfBirth(idNumber),
- isMale: parseIsMale(idNumber),
- isFemale: parseIsFemale(idNumber),
- isSouthAfricanCitizen: parseIsSouthAfricanCitizen(idNumber)
- };
+ function validate(idNumber) {
+ if (!regexpValidate(idNumber) || !datePartValidate(idNumber) || !controlDigitValidate(idNumber)) {
+ return false;
}
- function validate(idNumber) {
- if (!regexpValidate(idNumber) || !datePartValidate(idNumber) || !controlDigitValidate(idNumber)) {
- return false;
- }
+ return true;
+ }
- return true;
+ function regexpValidate(idNumber) {
+ if (typeof(idNumber) !== 'string') {
+ return false;
}
+ var regexp = /^[0-9]{13}$/;
+ return regexp.test(idNumber);
+ }
+
+ function datePartValidate(idNumber) {
+ var dateOfBirth = parseDateOfBirth(idNumber);
+ return !!dateOfBirth;
+ }
+
+ function controlDigitValidate(idNumber) {
+ var checkDigit = parseInt(idNumber[12], 10);
- function regexpValidate(idNumber) {
- if (typeof(idNumber) !== 'string') {
- return false;
- }
- var regexp = /^[0-9]{13}$/;
- return regexp.test(idNumber);
+ var oddDigitsSum = 0;
+
+ for (var i = 0; i < idNumber.length - 1; i+=2) {
+ oddDigitsSum += parseInt(idNumber[i], 10);
+ }
+ var evenDigits = '';
+ for (var j = 1; j < idNumber.length - 1; j+=2) {
+ evenDigits += idNumber[j];
}
+ evenDigits = parseInt(evenDigits, 10);
+ evenDigits *= 2;
+ evenDigits = '' + evenDigits;
- function datePartValidate(idNumber) {
- var dateOfBirth = parseDateOfBirth(idNumber);
- return !!dateOfBirth;
+ var sumOfEvenDigits = 0;
+ for (var k = 0; k < evenDigits.length; k++) {
+ sumOfEvenDigits += parseInt(evenDigits[k], 10);
}
+ var total = sumOfEvenDigits + oddDigitsSum;
+ var computedCheckDigit = 10 - (total % 10);
- function controlDigitValidate(idNumber) {
- var checkDigit = parseInt(idNumber[12], 10);
-
- var oddDigitsSum = 0;
-
- for (var i = 0; i < idNumber.length - 1; i+=2) {
- oddDigitsSum += parseInt(idNumber[i], 10);
- }
- var evenDigits = '';
- for (var j = 1; j < idNumber.length - 1; j+=2) {
- evenDigits += idNumber[j];
- }
- evenDigits = parseInt(evenDigits, 10);
- evenDigits *= 2;
- evenDigits = '' + evenDigits;
-
- var sumOfEvenDigits = 0;
- for (var k = 0; k < evenDigits.length; k++) {
- sumOfEvenDigits += parseInt(evenDigits[k], 10);
- }
- var total = sumOfEvenDigits + oddDigitsSum;
- var computedCheckDigit = 10 - (total % 10);
-
- if (computedCheckDigit === 10) {
- computedCheckDigit = 0;
- }
- return computedCheckDigit === checkDigit;
+ if (computedCheckDigit === 10) {
+ computedCheckDigit = 0;
}
+ return computedCheckDigit === checkDigit;
+ }
- function parseDateOfBirth(idNumber) {
- if (!regexpValidate(idNumber)) {
- return undefined;
- }
-
- //get year, and assume century
- var currentYear = new Date().getFullYear();
- var currentCentury = Math.floor(currentYear/100)*100;
- var yearPart = currentCentury + parseInt(idNumber.substring(0,2), 10);
- if (yearPart > currentYear) {
- yearPart -= 100; //must be last century
- }
-
- //In Javascript, Jan=0. In ID Numbers, Jan=1.
- var monthPart = parseInt(idNumber.substring(2,4), 10)-1;
-
- var dayPart = parseInt(idNumber.substring(4,6), 10);
-
- var dateOfBirth = new Date(yearPart, monthPart, dayPart);
-
- //validate that date is in a valid range by making sure that it wasn't 'corrected' during construction
- if (!dateOfBirth || dateOfBirth.getFullYear() !== yearPart || dateOfBirth.getMonth() !== monthPart || dateOfBirth.getDate() !== dayPart) {
- return undefined;
- }
-
- return dateOfBirth;
+ function parseDateOfBirth(idNumber) {
+ if (!regexpValidate(idNumber)) {
+ return undefined;
}
- function parseIsMale(idNumber) {
- return !parseIsFemale(idNumber);
+ //get year, and assume century
+ var currentYear = new Date().getFullYear();
+ var currentCentury = Math.floor(currentYear/100)*100;
+ var yearPart = currentCentury + parseInt(idNumber.substring(0,2), 10);
+ if (yearPart > currentYear) {
+ yearPart -= 100; //must be last century
}
- function parseIsFemale(idNumber) {
- if (!regexpValidate(idNumber)) {
- return undefined;
- }
- return parseInt(idNumber[6], 10) <= 4;
+ //In Javascript, Jan=0. In ID Numbers, Jan=1.
+ var monthPart = parseInt(idNumber.substring(2,4), 10)-1;
+
+ var dayPart = parseInt(idNumber.substring(4,6), 10);
+
+ var dateOfBirth = new Date(yearPart, monthPart, dayPart);
+
+ //validate that date is in a valid range by making sure that it wasn't 'corrected' during construction
+ if (!dateOfBirth || dateOfBirth.getFullYear() !== yearPart || dateOfBirth.getMonth() !== monthPart || dateOfBirth.getDate() !== dayPart) {
+ return undefined;
+ }
+
+ return dateOfBirth;
+ }
+
+ function parseIsMale(idNumber) {
+ return !parseIsFemale(idNumber);
+ }
+
+ function parseIsFemale(idNumber) {
+ if (!regexpValidate(idNumber)) {
+ return undefined;
}
+ return parseInt(idNumber[6], 10) <= 4;
+ }
- function parseIsSouthAfricanCitizen(idNumber) {
- if (!regexpValidate(idNumber)) {
- return undefined;
- }
- return parseInt(idNumber[10], 10) === 0;
+ function parseIsSouthAfricanCitizen(idNumber) {
+ if (!regexpValidate(idNumber)) {
+ return undefined;
}
+ return parseInt(idNumber[10], 10) === 0;
+ }
})));
diff --git a/test/test.js b/test/test.js
index 32a8358..83980b1 100644
--- a/test/test.js
+++ b/test/test.js
@@ -10,77 +10,77 @@ var expect = require('chai').expect;
var saIdParser = require('../south-african-id-parser.js');
describe('South African ID Number Parsing', function () {
- var validIdNumbers = [{
- idNumber: '9001049818080',
- dateOfBirth: new Date(1990, 0, 4),
- isMale: true,
- isFemale: false,
- isSouthAfricanCitizen: true
- }, {
- idNumber: '1012311412187',
- dateOfBirth: new Date(2010, 11, 31),
- isMale: false,
- isFemale: true,
- isSouthAfricanCitizen: false
- }];
- var invalidIdNumbers = [{
- idNumber: '9001049881080' //invalid check digit
- }, {
- idNumber: '9002302419087' //invalid date
- }, {
- idNumber: '9001049881a83' //has a character in there
- }, {
- idNumber: '90010498813' //wrong length
- }];
+ var validIdNumbers = [{
+ idNumber: '9001049818080',
+ dateOfBirth: new Date(1990, 0, 4),
+ isMale: true,
+ isFemale: false,
+ isSouthAfricanCitizen: true
+ }, {
+ idNumber: '1012311412187',
+ dateOfBirth: new Date(2010, 11, 31),
+ isMale: false,
+ isFemale: true,
+ isSouthAfricanCitizen: false
+ }];
+ var invalidIdNumbers = [{
+ idNumber: '9001049881080' //invalid check digit
+ }, {
+ idNumber: '9002302419087' //invalid date
+ }, {
+ idNumber: '9001049881a83' //has a character in there
+ }, {
+ idNumber: '90010498813' //wrong length
+ }];
- it('should correctly validate valid ID numbers', function() {
- validIdNumbers.forEach(function(validIdNumber) {
- expect(saIdParser.validate(validIdNumber.idNumber)).to.equal(true);
- });
+ it('should correctly validate valid ID numbers', function() {
+ validIdNumbers.forEach(function(validIdNumber) {
+ expect(saIdParser.validate(validIdNumber.idNumber)).to.equal(true);
});
- it('should correctly validate invalid ID numbers', function() {
- invalidIdNumbers.forEach(function(invalidIdNumber) {
- expect(saIdParser.validate(invalidIdNumber.idNumber)).to.equal(false);
- });
+ });
+ it('should correctly validate invalid ID numbers', function() {
+ invalidIdNumbers.forEach(function(invalidIdNumber) {
+ expect(saIdParser.validate(invalidIdNumber.idNumber)).to.equal(false);
});
-
- it('should parse valid date of birth correctly', function() {
- validIdNumbers.forEach(function(validIdNumber) {
- var parsedDate = saIdParser.parseDateOfBirth(validIdNumber.idNumber);
- var expectedDate = validIdNumber.dateOfBirth;
- expect(parsedDate.getTime()).to.equal(expectedDate.getTime());
- });
+ });
+
+ it('should parse valid date of birth correctly', function() {
+ validIdNumbers.forEach(function(validIdNumber) {
+ var parsedDate = saIdParser.parseDateOfBirth(validIdNumber.idNumber);
+ var expectedDate = validIdNumber.dateOfBirth;
+ expect(parsedDate.getTime()).to.equal(expectedDate.getTime());
});
- it ('should parse valid gender correctly', function() {
- validIdNumbers.forEach(function(validIdNumber) {
- expect(saIdParser.parseIsMale(validIdNumber.idNumber))
- .to.equal(validIdNumber.isMale);
- expect(saIdParser.parseIsFemale(validIdNumber.idNumber))
- .to.equal(validIdNumber.isFemale);
- });
+ });
+ it ('should parse valid gender correctly', function() {
+ validIdNumbers.forEach(function(validIdNumber) {
+ expect(saIdParser.parseIsMale(validIdNumber.idNumber))
+ .to.equal(validIdNumber.isMale);
+ expect(saIdParser.parseIsFemale(validIdNumber.idNumber))
+ .to.equal(validIdNumber.isFemale);
});
- it ('should parse valid citizenship correctly', function() {
- validIdNumbers.forEach(function(validIdNumber) {
- expect(saIdParser.parseIsSouthAfricanCitizen(validIdNumber.idNumber))
- .to.equal(validIdNumber.isSouthAfricanCitizen);
- });
+ });
+ it ('should parse valid citizenship correctly', function() {
+ validIdNumbers.forEach(function(validIdNumber) {
+ expect(saIdParser.parseIsSouthAfricanCitizen(validIdNumber.idNumber))
+ .to.equal(validIdNumber.isSouthAfricanCitizen);
});
+ });
- it('should correctly parse valid ID numbers', function() {
- validIdNumbers.forEach(function(validIdNumber) {
- var info = saIdParser.parse(validIdNumber.idNumber);
- expect(info.isValid).to.equal(true);
- expect(info.dateOfBirth.getTime()).to.equal(validIdNumber.dateOfBirth.getTime());
- expect(info.isMale).to.equal(validIdNumber.isMale);
- expect(info.isFemale).to.equal(validIdNumber.isFemale);
- expect(info.isSouthAfricanCitizen).to.equal(validIdNumber.isSouthAfricanCitizen);
- });
+ it('should correctly parse valid ID numbers', function() {
+ validIdNumbers.forEach(function(validIdNumber) {
+ var info = saIdParser.parse(validIdNumber.idNumber);
+ expect(info.isValid).to.equal(true);
+ expect(info.dateOfBirth.getTime()).to.equal(validIdNumber.dateOfBirth.getTime());
+ expect(info.isMale).to.equal(validIdNumber.isMale);
+ expect(info.isFemale).to.equal(validIdNumber.isFemale);
+ expect(info.isSouthAfricanCitizen).to.equal(validIdNumber.isSouthAfricanCitizen);
});
+ });
- it('should correctly parse invalid ID numbers', function() {
- invalidIdNumbers.forEach(function(invalidIdNumber) {
- var info = saIdParser.parse(invalidIdNumbers.idNumber);
- expect(info).to.deep.equal({isValid: false});
- });
+ it('should correctly parse invalid ID numbers', function() {
+ invalidIdNumbers.forEach(function(invalidIdNumber) {
+ var info = saIdParser.parse(invalidIdNumbers.idNumber);
+ expect(info).to.deep.equal({isValid: false});
});
+ });
});