aamva-parser
Version:
Plugin to parse AAMVA Drivers License Data from the PDF417 barcode
98 lines (97 loc) • 3.32 kB
JavaScript
import { FieldParser } from '../fieldParser';
import { VersionOneFieldMapper } from './versionOneFieldMapper';
import { NameSuffix } from '../../enums/nameSuffix';
export class VersionOneFieldParser extends FieldParser {
constructor(data) {
super(data, new VersionOneFieldMapper());
}
getDateFormat() {
return "yyyyMMdd";
}
parseFirstName() {
const firstName = this.parseString("firstName");
return firstName || this.parseDriverLicenseName("firstName");
}
parseLastName() {
const lastName = this.parseString("lastName");
return lastName || this.parseDriverLicenseName("lastName");
}
parseMiddleName() {
const middleName = this.parseString("middleName");
return middleName || this.parseDriverLicenseName("middleName");
}
parseHeight() {
const heightInFeetAndInches = this.parseString("height");
if (!heightInFeetAndInches)
return null;
const height = this.regex.firstMatch("([0-9]{1})", heightInFeetAndInches);
const inches = this.regex.firstMatch("[0-9]{1}([0-9]{2})", heightInFeetAndInches);
if (!height || !inches)
return null;
const calculatedHeight = (parseFloat(height) * 12) + parseFloat(inches);
if (heightInFeetAndInches.includes("cm")) {
return Math.round(calculatedHeight * FieldParser.INCHES_PER_CENTIMETER);
}
else {
return calculatedHeight;
}
}
parseNameSuffix() {
let suffix = this.parseString("suffix") || this.parseDriverLicenseName("suffix");
if (!suffix)
return NameSuffix.Unknown;
switch (suffix) {
case "JR":
return NameSuffix.Junior;
case "SR":
return NameSuffix.Senior;
case "1ST":
case "I":
return NameSuffix.First;
case "2ND":
case "II":
return NameSuffix.Second;
case "3RD":
case "III":
return NameSuffix.Third;
case "4TH":
case "IV":
return NameSuffix.Fourth;
case "5TH":
case "V":
return NameSuffix.Fifth;
case "6TH":
case "VI":
return NameSuffix.Sixth;
case "7TH":
case "VII":
return NameSuffix.Seventh;
case "8TH":
case "VIII":
return NameSuffix.Eighth;
case "9TH":
case "IX":
return NameSuffix.Ninth;
default:
return NameSuffix.Unknown;
}
}
parseDriverLicenseName(key) {
const driverLicenseName = this.parseString("driverLicenseName");
if (!driverLicenseName)
return null;
const namePieces = driverLicenseName.split(',');
switch (key) {
case "lastName":
return namePieces[0] || null;
case "firstName":
return namePieces[1] || null;
case "middleName":
return namePieces[2] || null;
case "suffix":
return namePieces[3] || null;
default:
return null;
}
}
}