UNPKG

vladdress

Version:

Lightweight Street Address Parser Written in TypeScript

38 lines (37 loc) 1.91 kB
"use strict"; 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;