vladdress
Version:
Lightweight Street Address Parser Written in TypeScript
38 lines (37 loc) • 1.91 kB
JavaScript
;
exports.__esModule = true;
exports.parseNoSuffix = exports.matchesNoSuffix = void 0;
var line2_1 = require("./line2");
var reNoSuffix = /\b\d+\s[a-zA-Z0-9_\s]+\b/i;
var matchesNoSuffix = function (input) {
return !!input && reNoSuffix.test(input);
};
exports.matchesNoSuffix = matchesNoSuffix;
var parseNoSuffix = function (streetString) {
var _a, _b;
var resultAddressLine2;
var resultStreetNumber;
var resultStreetName;
var resultAddressLine1 = (_a = streetString === null || streetString === void 0 ? void 0 : streetString.match(reNoSuffix)) === null || _a === void 0 ? void 0 : _a[0];
var reLine2 = new RegExp('\\s(' + Object.keys(line2_1.usLine2Prefixes).join('|') + ')\\.?\\s[a-zA-Z0-9_-]+$', 'i');
if (streetString === null || streetString === void 0 ? void 0 : streetString.match(reLine2)) {
resultAddressLine2 = (_b = streetString.match(reLine2)) === null || _b === void 0 ? void 0 : _b[0].trim();
streetString = streetString.replace(reLine2, "").trim(); // Carve off the first address line
}
streetString = streetString === null || streetString === void 0 ? void 0 : streetString.replace(reNoSuffix, "").trim(); // Carve off the first address line
var streetParts = resultAddressLine1 === null || resultAddressLine1 === void 0 ? void 0 : resultAddressLine1.split(' ');
// Assume type is last and number is first
if (streetParts) {
resultStreetNumber = streetParts[0]; // Assume number is first element
streetParts.shift(); // Remove the first element
resultStreetName = streetParts.join(' '); // Assume street name is everything else
}
return {
line1: resultAddressLine1,
line2: resultAddressLine2,
streetName: resultStreetName,
streetNumber: resultStreetNumber,
streetString: streetString
};
};
exports.parseNoSuffix = parseNoSuffix;