usa-states
Version:
Helper library for getting all of the states and territories of the United States in the specific format that you need.
513 lines (512 loc) • 15.9 kB
JavaScript
var UsaStates = (function () {
function UsaStates(configuration) {
this._states = [
{
name: "Alabama",
abbreviation: "AL",
territory: false,
capital: "Montgomery",
contiguous: true
},
{
name: "Alaska",
abbreviation: "AK",
territory: false,
capital: "Juneau",
contiguous: false
},
{
name: "American Samoa",
abbreviation: "AS",
territory: true,
capital: "Pago Pago",
contiguous: false
},
{
name: "Arizona",
abbreviation: "AZ",
territory: false,
capital: "Phoenix",
contiguous: true
},
{
name: "Arkansas",
abbreviation: "AR",
territory: false,
capital: "Little Rock",
contiguous: true
},
{
name: "California",
abbreviation: "CA",
territory: false,
capital: "Sacramento",
contiguous: true
},
{
name: "Colorado",
abbreviation: "CO",
territory: false,
capital: "Denver",
contiguous: true
},
{
name: "Connecticut",
abbreviation: "CT",
territory: false,
capital: "Hartford",
contiguous: true
},
{
name: "Delaware",
abbreviation: "DE",
territory: false,
capital: "Dover",
contiguous: true
},
{
name: "District Of Columbia",
abbreviation: "DC",
territory: false,
capital: "",
contiguous: true
},
{
name: "Federated States Of Micronesia",
abbreviation: "FM",
territory: true,
capital: "Palikir",
contiguous: false
},
{
name: "Florida",
abbreviation: "FL",
territory: false,
capital: "Tallahassee",
contiguous: true
},
{
name: "Georgia",
abbreviation: "GA",
territory: false,
capital: "Atlanta",
contiguous: true
},
{
name: "Guam",
abbreviation: "GU",
territory: true,
capital: "Hagåtña",
contiguous: false
},
{
name: "Hawaii",
abbreviation: "HI",
territory: false,
capital: "Honolulu",
contiguous: false
},
{
name: "Idaho",
abbreviation: "ID",
territory: false,
capital: "Boise",
contiguous: true
},
{
name: "Illinois",
abbreviation: "IL",
territory: false,
capital: "Springfield",
contiguous: true
},
{
name: "Indiana",
abbreviation: "IN",
territory: false,
capital: "Indianapolis",
contiguous: true
},
{
name: "Iowa",
abbreviation: "IA",
territory: false,
capital: "Des Moines",
contiguous: true
},
{
name: "Kansas",
abbreviation: "KS",
territory: false,
capital: "Topeka",
contiguous: true
},
{
name: "Kentucky",
abbreviation: "KY",
territory: false,
capital: "Frankfort",
contiguous: true
},
{
name: "Louisiana",
abbreviation: "LA",
territory: false,
capital: "Baton Rouge",
contiguous: true
},
{
name: "Maine",
abbreviation: "ME",
territory: false,
capital: "Augusta",
contiguous: true
},
{
name: "Marshall Islands",
abbreviation: "MH",
territory: true,
capital: "Majuro",
contiguous: false
},
{
name: "Maryland",
abbreviation: "MD",
territory: false,
capital: "Annapolis",
contiguous: true
},
{
name: "Massachusetts",
abbreviation: "MA",
territory: false,
capital: "Boston",
contiguous: true
},
{
name: "Michigan",
abbreviation: "MI",
territory: false,
capital: "Lansing",
contiguous: true
},
{
name: "Minnesota",
abbreviation: "MN",
territory: false,
capital: "Saint Paul",
contiguous: true
},
{
name: "Mississippi",
abbreviation: "MS",
territory: false,
capital: "Jackson",
contiguous: true
},
{
name: "Missouri",
abbreviation: "MO",
territory: false,
capital: "Jefferson City",
contiguous: true
},
{
name: "Montana",
abbreviation: "MT",
territory: false,
capital: "Helena",
contiguous: true
},
{
name: "Nebraska",
abbreviation: "NE",
territory: false,
capital: "Lincoln",
contiguous: true
},
{
name: "Nevada",
abbreviation: "NV",
territory: false,
capital: "Carson City",
contiguous: true
},
{
name: "New Hampshire",
abbreviation: "NH",
territory: false,
capital: "Concord",
contiguous: true
},
{
name: "New Jersey",
abbreviation: "NJ",
territory: false,
capital: "Trenton",
contiguous: true
},
{
name: "New Mexico",
abbreviation: "NM",
territory: false,
capital: "Santa Fe",
contiguous: true
},
{
name: "New York",
abbreviation: "NY",
territory: false,
capital: "Albany",
contiguous: true
},
{
name: "North Carolina",
abbreviation: "NC",
territory: false,
capital: "Raleigh",
contiguous: true
},
{
name: "North Dakota",
abbreviation: "ND",
territory: false,
capital: "Bismarck",
contiguous: true
},
{
name: "Northern Mariana Islands",
abbreviation: "MP",
territory: true,
capital: "Saipan",
contiguous: false
},
{
name: "Ohio",
abbreviation: "OH",
territory: false,
capital: "Columbus",
contiguous: true
},
{
name: "Oklahoma",
abbreviation: "OK",
territory: false,
capital: "Oklahoma City",
contiguous: true
},
{
name: "Oregon",
abbreviation: "OR",
territory: false,
capital: "Salem",
contiguous: true
},
{
name: "Palau",
abbreviation: "PW",
territory: true,
capital: "Ngerulmud",
contiguous: false
},
{
name: "Pennsylvania",
abbreviation: "PA",
territory: false,
capital: "Harrisburg",
contiguous: true
},
{
name: "Puerto Rico",
abbreviation: "PR",
territory: true,
capital: "San Juan",
contiguous: false
},
{
name: "Rhode Island",
abbreviation: "RI",
territory: false,
capital: "Providence",
contiguous: true
},
{
name: "South Carolina",
abbreviation: "SC",
territory: false,
capital: "Columbia",
contiguous: true
},
{
name: "South Dakota",
abbreviation: "SD",
territory: false,
capital: "Pierre",
contiguous: true
},
{
name: "Tennessee",
abbreviation: "TN",
territory: false,
capital: "Nashville",
contiguous: true
},
{
name: "Texas",
abbreviation: "TX",
territory: false,
capital: "Austin",
contiguous: true
},
{
name: "Utah",
abbreviation: "UT",
territory: false,
capital: "Salt Lake City",
contiguous: true
},
{
name: "Vermont",
abbreviation: "VT",
territory: false,
capital: "Montpelier",
contiguous: true
},
{
name: "Virgin Islands",
abbreviation: "VI",
territory: true,
capital: "Charlotte Amalie",
contiguous: false
},
{
name: "Virginia",
abbreviation: "VA",
territory: false,
capital: "Richmond",
contiguous: true
},
{
name: "Washington",
abbreviation: "WA",
territory: false,
capital: "Olympia",
contiguous: true
},
{
name: "West Virginia",
abbreviation: "WV",
territory: false,
capital: "Charleston",
contiguous: true
},
{
name: "Wisconsin",
abbreviation: "WI",
territory: false,
capital: "Madison",
contiguous: true
},
{
name: "Wyoming",
abbreviation: "WY",
territory: false,
capital: "Cheyenne",
contiguous: true
}
];
this.selectorAliases = {
abbreviation: ['a', 'abbreviations', 'abbr'],
name: ['names', 'state', 'states', 's', 'n'],
capital: ['c', 'cap', 'capitals']
};
this.defaultFormat = {
abbreviation: 'name'
};
this.defaultSelector = 'abbreviation';
this.defaultConfig = {
contiguousOnly: false,
includeTerritories: false,
exclude: []
};
this.config = this.defaultConfig;
if (configuration) {
for (var key in this.config) {
if (typeof configuration[key] !== 'undefined') {
this.config[key] = configuration[key];
}
}
}
this.aliasKeys = Object.keys(this.selectorAliases);
this.states = this.generateStates();
}
UsaStates.prototype.generateStates = function () {
var states = [];
for (var _i = 0, _a = this._states; _i < _a.length; _i++) {
var state = _a[_i];
if (!((this.config.contiguousOnly && !state.contiguous) || (!this.config.includeTerritories && state.territory))) {
if (!(this.config.exclude &&
(this.config.exclude.indexOf(state.abbreviation) >= 0 ||
this.config.exclude.indexOf(state.name) >= 0 ||
this.config.exclude.indexOf(state.capital) >= 0))) {
states.push(state);
}
}
}
return states;
};
UsaStates.prototype.arrayOf = function (selector) {
var select = selector ? this.findSelector(selector) : this.defaultSelector;
if (!select)
throw new Error('Invalid selector used: ' + selector);
var states = [];
for (var _i = 0, _a = this.states; _i < _a.length; _i++) {
var state = _a[_i];
states.push(state[select]);
}
return states;
};
UsaStates.prototype.format = function (format) {
var states = [];
var _format = format ? this.normalizeFormat(format) : this.defaultFormat;
for (var _i = 0, _a = this.states; _i < _a.length; _i++) {
var state = _a[_i];
var formattedState = {};
for (var key in _format) {
var checkedKey = this.findSelector(key);
var checkedValue = this.findSelector(_format[key]);
if (!checkedKey && key[0] === '$')
key = key.substr(1);
if (!checkedValue && _format[key][0] === '$')
_format[key] = _format[key].substr(1);
formattedState[checkedKey ? state[checkedKey] : key] = checkedValue ? state[checkedValue] : _format[key];
}
states.push(formattedState);
}
return states;
};
UsaStates.prototype.normalizeFormat = function (format) {
var _format = {};
for (var key in format) {
var checkedKey = this.findSelector(key);
var checkedValue = this.findSelector(format[key]);
_format[checkedKey ? checkedKey : key] = checkedValue ? checkedValue : format[key];
}
return _format;
};
UsaStates.prototype.findSelector = function (selector) {
var select = selector.toLowerCase();
if (this.aliasKeys.indexOf(select) >= 0) {
return select;
}
for (var _i = 0, _a = this.aliasKeys; _i < _a.length; _i++) {
var key = _a[_i];
if (this.selectorAliases[key].indexOf(select) >= 0) {
return key;
}
}
return null;
};
return UsaStates;
}());
exports.UsaStates = UsaStates;