@cityssm/mpac-tools
Version:
Lookups and utilities for working with MPAC data.
25 lines (24 loc) • 1.12 kB
JavaScript
import { rollNumberMunicipalities } from './lookups.js';
export function validateRollNumber(rollNumber) {
return (/^\d{15}$/.test(rollNumber) ||
(/^\d{19}$/.test(rollNumber) &&
Object.keys(rollNumberMunicipalities).includes(rollNumber.slice(0, 4))));
}
export function parseRollNumber(rollNumber) {
if (!validateRollNumber(rollNumber)) {
throw new Error(`Invalid roll number: ${rollNumber}`);
}
const is19Digit = rollNumber.length === 19;
const countyMunicipalityDigits = is19Digit ? rollNumber.slice(0, 4) : '';
const shortRollNumber = is19Digit ? rollNumber.slice(4) : rollNumber;
return {
county: is19Digit ? countyMunicipalityDigits.slice(0, 2) : undefined,
municipality: is19Digit ? countyMunicipalityDigits.slice(2, 4) : undefined,
mapArea: shortRollNumber.slice(0, 2),
mapDivision: shortRollNumber.slice(2, 3),
mapSubdivision: shortRollNumber.slice(3, 6),
parcel: shortRollNumber.slice(6, 9),
parcelSub: shortRollNumber.slice(9, 11),
primarySubordinate: shortRollNumber.slice(11, 15)
};
}