Comparing version 1.4.0 to 1.5.0
@@ -35,3 +35,3 @@ /* jshint node: true */ | ||
**/ | ||
proto._extractStreetParts = function(startIndex, splitStreet) { | ||
proto._extractStreetParts = function(startIndex, streetPartsLength) { | ||
var index = startIndex; | ||
@@ -41,3 +41,2 @@ var streetParts = []; | ||
var parts = this.parts; | ||
var streetPartsLength = (splitStreet) ? 3 : 2; | ||
var testFn = function() { | ||
@@ -192,6 +191,6 @@ return true; | ||
**/ | ||
proto.extractStreet = function(regexes, reSplitStreet) { | ||
proto.extractStreet = function(regexes, reSplitStreet, reNoStreet) { | ||
var reNumericesque = /^(\d*|\d*\w)$/; | ||
var parts = this.parts; | ||
var splitStreet = false; | ||
var streetPartsLength = 2; | ||
@@ -239,7 +238,11 @@ // ensure we have regexes | ||
if (reSplitStreet.test(parts[startIndex + 1])) { | ||
splitStreet = true; | ||
streetPartsLength = 3; | ||
startIndex += 1; | ||
} | ||
this._extractStreetParts(startIndex, splitStreet); | ||
if (reNoStreet.test(parts[startIndex])) { | ||
streetPartsLength = 1; | ||
} | ||
this._extractStreetParts(startIndex, streetPartsLength); | ||
break; | ||
@@ -246,0 +249,0 @@ } // if |
@@ -5,3 +5,3 @@ { | ||
"description": "Freeform Street Address Parser", | ||
"version": "1.4.0", | ||
"version": "1.5.0", | ||
"main": "index.js", | ||
@@ -8,0 +8,0 @@ "scripts": [ |
@@ -6,3 +6,3 @@ { | ||
"author": "Damon Oehlman <damon.oehlman@gmail.com>", | ||
"version": "1.4.0", | ||
"version": "1.5.0", | ||
"stability": "stable", | ||
@@ -9,0 +9,0 @@ "repository": { |
@@ -79,6 +79,8 @@ /* jshint node: true */ | ||
'W(ALK)?WAY', // WALKWAY / WWAY | ||
'YARD' // YARD | ||
'YARD', // YARD | ||
'BROADWAY' | ||
]); | ||
var reSplitStreet = /^(N|NTH|NORTH|E|EST|EAST|S|STH|SOUTH|W|WST|WEST)\,$/i; | ||
var reNoStreet = compiler(['BROADWAY']).pop(); | ||
@@ -112,3 +114,3 @@ module.exports = function(text, opts) { | ||
// extract the street | ||
.extractStreet(streetRegexes, reSplitStreet); | ||
.extractStreet(streetRegexes, reSplitStreet, reNoStreet); | ||
@@ -115,0 +117,0 @@ if (opts && opts.state) { |
@@ -135,1 +135,10 @@ var test = require('tape'); | ||
})); | ||
// Broadway doesn't have a suffix like "Street" or "Road" | ||
test('123 Broadway, New York, NY 10010', expect({ | ||
number: '123', | ||
street: 'Broadway', | ||
state: 'NY', | ||
regions: ['New York'], | ||
postalcode: '10010' | ||
})); |
91937
1564