UNPKG

snailmailaddressparser

Version:

A Javascript library to parse snail mail addresses into components

279 lines (269 loc) 11.3 kB
### * ISO 3166 country codes * * See eg https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes ### iso3166 = [ {name: "Afghanistan", aliases: ["AF"]}, {name: "Åland Islands", aliases: ["AX", "Aland Islands"]}, {name: "Albania", aliases: ["AL"]}, {name: "Algeria", aliases: ["DZ"]}, {name: "American Samoa", aliases: ["AS"]}, {name: "Andorra", aliases: ["AD"]}, {name: "Angola", aliases: ["AO"]}, {name: "Anguilla", aliases: ["AI"]}, {name: "Antarctica", aliases: ["AQ"]}, {name: "Antigua and Barbuda", aliases: ["AG"]}, {name: "Argentina", aliases: ["AR"]}, {name: "Armenia", aliases: ["AM"]}, {name: "Aruba", aliases: ["AW"]}, {name: "Australia", aliases: ["AU"]}, {name: "Austria", aliases: ["AT"]}, {name: "Azerbaijan", aliases: ["AZ"]}, {name: "Bahamas", aliases: ["BS"]}, {name: "Bahrain", aliases: ["BH"]}, {name: "Bangladesh", aliases: ["BD"]}, {name: "Barbados", aliases: ["BB"]}, {name: "Belarus", aliases: ["BY"]}, {name: "Belgium", aliases: ["BE"]}, {name: "Belize", aliases: ["BZ"]}, {name: "Benin", aliases: ["BJ"]}, {name: "Bermuda", aliases: ["BM"]}, {name: "Bhutan", aliases: ["BT"]}, {name: "Bolivia, Plurinational State of", aliases: ["BO", "Bolivia"]}, {name: "Bonaire, Sint Eustatius and Saba", aliases: ["BQ"]}, {name: "Bosnia and Herzegovina", aliases: ["BA"]}, {name: "Botswana", aliases: ["BW"]}, {name: "Bouvet Island", aliases: ["BV"]}, {name: "Brazil", aliases: ["BR"]}, {name: "British Indian Ocean Territory", aliases: ["IO"]}, {name: "Brunei Darussalam", aliases: ["BN"]}, {name: "Bulgaria", aliases: ["BG"]}, {name: "Burkina Faso", aliases: ["BF"]}, {name: "Burundi", aliases: ["BI"]}, {name: "Cambodia", aliases: ["KH"]}, {name: "Cameroon", aliases: ["CM"]}, {name: "Canada", aliases: ["CA"]}, {name: "Cape Verde", aliases: ["CV"]}, {name: "Cayman Islands", aliases: ["KY"]}, {name: "Central African Republic", aliases: ["CF"]}, {name: "Chad", aliases: ["TD"]}, {name: "Chile", aliases: ["CL"]}, {name: "China", aliases: ["CN"]}, {name: "Christmas Island", aliases: ["CX"]}, {name: "Cocos (Keeling) Islands", aliases: ["CC"]}, {name: "Colombia", aliases: ["CO"]}, {name: "Comoros", aliases: ["KM"]}, {name: "Congo", aliases: ["CG"]}, {name: "Congo, the Democratic Republic of the", aliases: ["CD"]}, {name: "Cook Islands", aliases: ["CK"]}, {name: "Costa Rica", aliases: ["CR"]}, {name: "Côte d'Ivoire", aliases: ["CI"]}, {name: "Croatia", aliases: ["HR"]}, {name: "Cuba", aliases: ["CU"]}, {name: "Curaçao", aliases: ["CW"]}, {name: "Cyprus", aliases: ["CY"]}, {name: "Czech Republic", aliases: ["CZ"]}, {name: "Denmark", aliases: ["DK"]}, {name: "Djibouti", aliases: ["DJ"]}, {name: "Dominica", aliases: ["DM"]}, {name: "Dominican Republic", aliases: ["DO"]}, {name: "Ecuador", aliases: ["EC"]}, {name: "Egypt", aliases: ["EG"]}, {name: "El Salvador", aliases: ["SV"]}, {name: "Equatorial Guinea", aliases: ["GQ"]}, {name: "Eritrea", aliases: ["ER"]}, {name: "Estonia", aliases: ["EE"]}, {name: "Ethiopia", aliases: ["ET"]}, {name: "Falkland Islands (Malvinas)", aliases: ["FK"]}, {name: "Faroe Islands", aliases: ["FO"]}, {name: "Fiji", aliases: ["FJ"]}, {name: "Finland", aliases: ["FI"]}, {name: "France", aliases: ["FR"]}, {name: "French Guiana", aliases: ["GF"]}, {name: "French Polynesia", aliases: ["PF"]}, {name: "French Southern Territories", aliases: ["TF"]}, {name: "Gabon", aliases: ["GA"]}, {name: "Gambia", aliases: ["GM"]}, {name: "Georgia", aliases: ["GE"]}, {name: "Germany", aliases: ["DE"]}, {name: "Ghana", aliases: ["GH"]}, {name: "Gibraltar", aliases: ["GI"]}, {name: "Greece", aliases: ["GR"]}, {name: "Greenland", aliases: ["GL"]}, {name: "Grenada", aliases: ["GD"]}, {name: "Guadeloupe", aliases: ["GP"]}, {name: "Guam", aliases: ["GU"]}, {name: "Guatemala", aliases: ["GT"]}, {name: "Guernsey", aliases: ["GG"]}, {name: "Guinea", aliases: ["GN"]}, {name: "Guinea-Bissau", aliases: ["GW"]}, {name: "Guyana", aliases: ["GY"]}, {name: "Haiti", aliases: ["HT"]}, {name: "Heard Island and McDonald Islands", aliases: ["HM"]}, {name: "Holy See (Vatican City State)", aliases: ["VA"]}, {name: "Honduras", aliases: ["HN"]}, {name: "Hong Kong", aliases: ["HK"]}, {name: "Hungary", aliases: ["HU"]}, {name: "Iceland", aliases: ["IS"]}, {name: "India", aliases: ["IN"]}, {name: "Indonesia", aliases: ["ID"]}, {name: "Iran, Islamic Republic of", aliases: ["IR"]}, {name: "Iraq", aliases: ["IQ"]}, {name: "Ireland", aliases: ["IE"]}, {name: "Isle of Man", aliases: ["IM"]}, {name: "Israel", aliases: ["IL"]}, {name: "Italy", aliases: ["IT"]}, {name: "Jamaica", aliases: ["JM"]}, {name: "Japan", aliases: ["JP"]}, {name: "Jersey", aliases: ["JE"]}, {name: "Jordan", aliases: ["JO"]}, {name: "Kazakhstan", aliases: ["KZ"]}, {name: "Kenya", aliases: ["KE"]}, {name: "Kiribati", aliases: ["KI"]}, {name: "Korea, Democratic People's Republic of", aliases: ["KP"]}, {name: "Korea, Republic of", aliases: ["KR"]}, {name: "Kuwait", aliases: ["KW"]}, {name: "Kyrgyzstan", aliases: ["KG"]}, {name: "Lao People's Democratic Republic", aliases: ["LA"]}, {name: "Latvia", aliases: ["LV"]}, {name: "Lebanon", aliases: ["LB"]}, {name: "Lesotho", aliases: ["LS"]}, {name: "Liberia", aliases: ["LR"]}, {name: "Libya", aliases: ["LY"]}, {name: "Liechtenstein", aliases: ["LI"]}, {name: "Lithuania", aliases: ["LT"]}, {name: "Luxembourg", aliases: ["LU"]}, {name: "Macao", aliases: ["MO"]}, {name: "Macedonia, the former Yugoslav Republic of", aliases: ["MK"]}, {name: "Madagascar", aliases: ["MG"]}, {name: "Malawi", aliases: ["MW"]}, {name: "Malaysia", aliases: ["MY"]}, {name: "Maldives", aliases: ["MV"]}, {name: "Mali", aliases: ["ML"]}, {name: "Malta", aliases: ["MT"]}, {name: "Marshall Islands", aliases: ["MH"]}, {name: "Martinique", aliases: ["MQ"]}, {name: "Mauritania", aliases: ["MR"]}, {name: "Mauritius", aliases: ["MU"]}, {name: "Mayotte", aliases: ["YT"]}, {name: "Mexico", aliases: ["MX"]}, {name: "Micronesia, Federated States of", aliases: ["FM"]}, {name: "Moldova, Republic of", aliases: ["MD"]}, {name: "Monaco", aliases: ["MC"]}, {name: "Mongolia", aliases: ["MN"]}, {name: "Montenegro", aliases: ["ME"]}, {name: "Montserrat", aliases: ["MS"]}, {name: "Morocco", aliases: ["MA"]}, {name: "Mozambique", aliases: ["MZ"]}, {name: "Myanmar", aliases: ["MM"]}, {name: "Namibia", aliases: ["NA"]}, {name: "Nauru", aliases: ["NR"]}, {name: "Nepal", aliases: ["NP"]}, {name: "Netherlands", aliases: ["NL"]}, {name: "New Caledonia", aliases: ["NC"]}, {name: "New Zealand", aliases: ["NZ"]}, {name: "Nicaragua", aliases: ["NI"]}, {name: "Niger", aliases: ["NE"]}, {name: "Nigeria", aliases: ["NG"]}, {name: "Niue", aliases: ["NU"]}, {name: "Norfolk Island", aliases: ["NF"]}, {name: "Northern Mariana Islands", aliases: ["MP"]}, {name: "Norway", aliases: ["NO"]}, {name: "Oman", aliases: ["OM"]}, {name: "Pakistan", aliases: ["PK"]}, {name: "Palau", aliases: ["PW"]}, {name: "Palestinian Territory, Occupied", aliases: ["PS"]}, {name: "Panama", aliases: ["PA"]}, {name: "Papua New Guinea", aliases: ["PG"]}, {name: "Paraguay", aliases: ["PY"]}, {name: "Peru", aliases: ["PE"]}, {name: "Philippines", aliases: ["PH"]}, {name: "Pitcairn", aliases: ["PN"]}, {name: "Poland", aliases: ["PL"]}, {name: "Portugal", aliases: ["PT"]}, {name: "Puerto Rico", aliases: ["PR"]}, {name: "Qatar", aliases: ["QA"]}, {name: "Réunion", aliases: ["RE"]}, {name: "Romania", aliases: ["RO"]}, {name: "Russian Federation", aliases: ["RU"]}, {name: "Rwanda", aliases: ["RW"]}, {name: "Saint Barthélemy", aliases: ["BL"]}, {name: "Saint Helena, Ascension and Tristan da Cunha", aliases: ["SH"]}, {name: "Saint Kitts and Nevis", aliases: ["KN"]}, {name: "Saint Lucia", aliases: ["LC"]}, {name: "Saint Martin (French part)", aliases: ["MF"]}, {name: "Saint Pierre and Miquelon", aliases: ["PM"]}, {name: "Saint Vincent and the Grenadines", aliases: ["VC"]}, {name: "Samoa", aliases: ["WS"]}, {name: "San Marino", aliases: ["SM"]}, {name: "Sao Tome and Principe", aliases: ["ST"]}, {name: "Saudi Arabia", aliases: ["SA"]}, {name: "Senegal", aliases: ["SN"]}, {name: "Serbia", aliases: ["RS"]}, {name: "Seychelles", aliases: ["SC"]}, {name: "Sierra Leone", aliases: ["SL"]}, {name: "Singapore", aliases: ["SG"]}, {name: "Sint Maarten (Dutch part)", aliases: ["SX"]}, {name: "Slovakia", aliases: ["SK"]}, {name: "Slovenia", aliases: ["SI"]}, {name: "Solomon Islands", aliases: ["SB"]}, {name: "Somalia", aliases: ["SO"]}, {name: "South Africa", aliases: ["ZA"]}, {name: "South Georgia and the South Sandwich Islands", aliases: ["GS"]}, {name: "South Sudan", aliases: ["SS"]}, {name: "Spain", aliases: ["ES"]}, {name: "Sri Lanka", aliases: ["LK"]}, {name: "Sudan", aliases: ["SD"]}, {name: "Suriname", aliases: ["SR"]}, {name: "Svalbard and Jan Mayen", aliases: ["SJ"]}, {name: "Swaziland", aliases: ["SZ"]}, {name: "Sweden", aliases: ["SE"]}, {name: "Switzerland", aliases: ["CH"]}, {name: "Syrian Arab Republic", aliases: ["SY"]}, {name: "Taiwan, Province of China", aliases: ["TW"]}, {name: "Tajikistan", aliases: ["TJ"]}, {name: "Tanzania, United Republic of", aliases: ["TZ"]}, {name: "Thailand", aliases: ["TH"]}, {name: "Timor-Leste", aliases: ["TL"]}, {name: "Togo", aliases: ["TG"]}, {name: "Tokelau", aliases: ["TK"]}, {name: "Tonga", aliases: ["TO"]}, {name: "Trinidad and Tobago", aliases: ["TT"]}, {name: "Tunisia", aliases: ["TN"]}, {name: "Turkey", aliases: ["TR"]}, {name: "Turkmenistan", aliases: ["TM"]}, {name: "Turks and Caicos Islands", aliases: ["TC"]}, {name: "Tuvalu", aliases: ["TV"]}, {name: "Uganda", aliases: ["UG"]}, {name: "Ukraine", aliases: ["UA"]}, {name: "United Arab Emirates", aliases: ["AE"]}, {name: "United Kingdom", aliases: ["GB"]}, {name: "United States", aliases: ["US", "USA", "United States of America"]}, {name: "United States Minor Outlying Islands", aliases: ["UM"]}, {name: "Uruguay", aliases: ["UY"]}, {name: "Uzbekistan", aliases: ["UZ"]}, {name: "Vanuatu", aliases: ["VU"]}, {name: "Venezuela, Bolivarian Republic of", aliases: ["VE"]}, {name: "Viet Nam", aliases: ["VN"]}, {name: "Virgin Islands, British", aliases: ["VG"]}, {name: "Virgin Islands, U.S.", aliases: ["VI"]}, {name: "Wallis and Futuna", aliases: ["WF"]}, {name: "Western Sahara", aliases: ["EH"]}, {name: "Yemen", aliases: ["YE"]}, {name: "Zambia", aliases: ["ZM"]}, {name: "Zimbabwe", aliases: ["ZW"]} ] # the following is a list of all possible names of all countries ALL_COUNTRY_IDS = _.flatten(_.map(iso3166, (c) -> [c.name, c.aliases])) # the following maps aliases and names onto the canonical country name # eg. USA: United States; United States: United States, etc. COUNTRY_NAMES_MAP = {} _.each(iso3166, (country) -> name = country.name.toLowerCase() COUNTRY_NAMES_MAP[name] = name _.each(country.aliases, (alias) -> COUNTRY_NAMES_MAP[alias.toLowerCase()] = name ) ) COUNTRIES_REX = XRegExp("(#{_.keys(iso3166).join("|")})")