vladdress
Version:
Lightweight Street Address Parser Written in TypeScript
40 lines (39 loc) • 1.79 kB
JavaScript
;
exports.__esModule = true;
exports.getStateInfo = void 0;
var properties_1 = require("../utils/properties");
var allStates = require("../data/states.json");
var strings_1 = require("../utils/strings");
function getStateInfo(input) {
var _a, _b;
var result = {};
if (input.length == 2 && (0, properties_1.getKeyByValue)(allStates, input.toUpperCase())) {
result.stateAbbreviation = input.toUpperCase();
var key = (0, properties_1.getKeyByValue)(allStates, result.stateAbbreviation);
if (key) {
result.stateName = (0, strings_1.toTitleCase)(key);
}
}
else {
// Next check if the state string ends in state name or abbeviation
// (state abbreviation must be preceded by a space to ensure accuracy)
var lowerInput = input.toLowerCase();
for (var _i = 0, _c = Object.keys(allStates); _i < _c.length; _i++) {
var state = _c[_i];
if (lowerInput.endsWith(state)) {
result.stateName = (0, strings_1.toTitleCase)(state);
result.stateAbbreviation = allStates[state];
result.trimmedString = (_a = (0, strings_1.replaceCaseInsensitive)(input, state)) === null || _a === void 0 ? void 0 : _a.trim();
break;
}
else if (lowerInput.endsWith(' ' + allStates[state].toLowerCase())) {
result.stateAbbreviation = allStates[state];
result.stateName = (0, strings_1.toTitleCase)(state);
result.trimmedString = (_b = (0, strings_1.replaceCaseInsensitive)(input, allStates[state])) === null || _b === void 0 ? void 0 : _b.trim();
break;
}
}
}
return result;
}
exports.getStateInfo = getStateInfo;