snailmailaddressparser
Version:
A Javascript library to parse snail mail addresses into components
1 lines • 21.1 kB
JavaScript
(function(a,e){if(typeof define==="function"&&define.amd){define(["simplemailaddressparser"],e)}else{a.simplemailaddressparser=e(a.simplemailaddressparser)}})(this,function(){var a,e,s,n;if(typeof require==="function"){a=require("lodash");s=require("xregexp");e=s.XRegExp?s.XRegExp:s}if(a.isFunction(e.addUnicodePackage)){e.addUnicodePackage()}n="0.1.27";var i,t;if(typeof module!=="undefined"&&module.exports){i=function(a,e,s){if(e==null){e=false}if(s==null){s=2}return require("util").inspect(a,e,s,true)};t=function(a){return require("util").debug(a)}}else{i=function(a){return console.log(a)};t=function(a){return console.log(a)}}var r,l,o,m;m=[{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"]}];r=a.flatten(a.map(m,function(a){return[a.name,a.aliases]}));o={};a.each(m,function(e){var s;s=e.name.toLowerCase();o[s]=s;return a.each(e.aliases,function(a){return o[a.toLowerCase()]=s})});l=e("("+a.keys(m).join("|")+")");var u,d=[].slice;u=function(){function e(){this._list=[]}e.prototype.add=function(){var e,s;e=1<=arguments.length?d.call(arguments,0):[];s=[a.toArray(e)];a.each(e,function(e,n){var i;if(!e.is_optional()){return}i=[];a.each(s,function(s){var n;n=a.clone(s);n.splice(n.indexOf(e),1);return i.push(n)});return s=s.concat(i)});return this._list=this._list.concat(s)};e.prototype.all=function(){return this._list};return e}();var c,p=[].indexOf||function(a){for(var e=0,s=this.length;e<s;e++){if(e in this&&this[e]===a)return e}return-1};c=function(){function s(s,n,i){this.name=s;this.expression=n;if(i==null){i={}}this.options=a.defaults(i,{invalid_tests:[],is_optional:false,rex_flags:"xi",valid_tests:[],_or:null});this.rex=e("^"+n+"$",this.options.rex_flags)}s.prototype.names=function(){if(this.options._or){return""+this.name+" or "+this.options._or.names()}else{return this.name}};s.prototype.optional=function(){var a;a=this.clone();a.options.is_optional=true;return a};s.prototype.mandatory=function(){var a;a=this.clone();a.options.is_optional=false;return a};s.prototype.is_optional=function(){if(this.options.is_optional){return true}if(this.options._or){return this.options._or.is_optional()}return false};s.prototype.clone=function(){return new s(this.name,this.expression,this.options)};s.prototype.or=function(e){var s;s=this;if(a.isObject(this.options._or)){if(this.options._or.name===e.name){return this}this.options._or=this.options._or.or(e)}else{s=this.clone();s.options._or=e}return s};s.prototype.match=function(s,n){var i,t,r,l;if(n==null){n=true}r=e.exec(s,this.rex);if(r===null){if(n){return((l=this.options._or)!=null?typeof l.match==="function"?l.match(s):void 0:void 0)||null}else{return n}}i=["index","input"];t={};a.each(a.keys(r),function(a){if(p.call(i,a)<0&&isNaN(a)){return t[a]=r[a]}});return t};s.prototype.isLineMatcherClass=true;return s}();var f,p=[].indexOf||function(a){for(var e=0,s=this.length;e<s;e++){if(e in this&&this[e]===a)return e}return-1};f=function(){function e(){}e._registered_strategies={};e.prototype.register=function(){var a;a=this.name.toLowerCase();if(!a){throw new Error("Strategies require a `name`")}if(p.call(e._registered_strategies,a)>=0){throw new Error("Strategy "+a+" registered twice")}return e._registered_strategies[a]=this};e.all_strategies=function(){return this._registered_strategies};e.prototype.run_rex_line_strategy=function(e,s){var n;n={};if(e.length!==s.length){throw new Error("Matcher expects "+e.length+" lines,"+(" but the address has "+s.length+" lines."))}a.each(e,function(e,t){var r,l;r=e.match(s[t]);if(r===null){throw new Error("Line "+t+" is not a "+e.names())}l=a.intersection(n,r);if(!a.isEmpty(l)){throw new Error("Overlapping elements: "+i(l))}return a.extend(n,r)});return n};e.prototype.run_line_strategies=function(e,s){var n,i=this;n=null;a.any(e,function(a,e){var t;try{n=i.run_rex_line_strategy(a,s)}catch(r){t=r;return false}return n!==null});return n};e.prototype.debug_line_strategies=function(e,s){var n,i=this;n=a.map(s,function(a,e){return""+e+": "+a}).join("\n");console.log("\n** Debugging:\n"+n);return a.each(e,function(a,e){var n,t;if(a.length!==s.length){return}try{return t=i.run_rex_line_strategy(a,s)}catch(r){n=r;return console.log("Rex failed: "+n)}})};e.prototype.parse_address=function(e,s,n){var i,t;if(n==null){n=false}if(e.length<2){throw new Error("Addresses must be at least two lines.")}i=this.line_strategies()||[];t=this.run_line_strategies(i,e)||{};if(a.isEmpty(t)){if(n){this.debug_line_strategies(i,e)}else{throw new Error("This address does not match a known format.")}}return a.defaults(t,this.expected_fields())};return e}();f.do_parse_address=function(e,s){var n,i,t,r,l,m,u,d,c,h;s=a.defaults(s,{defaultCountry:"",debug:false});u=[];l=[];r=a.filter(a.map(e.split("\n"),function(a){return a.trim()}),a.identity);if(r.length<2){throw new Error("Addresses must be at least two lines long")}t=r[r.length-1];if(h=t.toLowerCase(),p.call(a.keys(o),h)>=0){n=r.pop().toLowerCase()}else if(s.defaultCountry){n=s.defaultCountry}if(n){i=o[n.toLowerCase()];if(p.call(a.keys(f._registered_strategies),i)>=0){u=[f._registered_strategies[i]]}}if(a.isEmpty(u)){u=a.values(f._registered_strategies)}for(d=0,c=u.length;d<c;d++){m=u[d];l.push(m.parse_address(r,e,s.debug))}return{matches:a.flatten(l)}};var h,S,A={}.hasOwnProperty,y=function(a,e){for(var s in e){if(A.call(e,s))a[s]=e[s]}function n(){this.constructor=a}n.prototype=e.prototype;a.prototype=new n;a.__super__=e.prototype;return a};h=function(a){var e,s,n,i,t,r,l,o,m,d,p,f,h,A,g,C;y(_,a);function _(){S=_.__super__.constructor.apply(this,arguments);return S}_.prototype.name="canada";h=["AB","Alberta","BC","British\\s+Columbia","Manitoba","MB","New Brunswick","NB","Newfoundland\\s+and\\s+Labrador","Newfoundland","NF","NL","Newfoundland\\s+&\\s+Labrador","Northwest Territories","NT","Nova Scotia","NS","Nunavut","NU","ON","Ontario","Prince\\s+Edward\\s+Island","PE","PEI","Quebec","QC","Saskatchewan","SK","Yukon","YT"];g=["Abbey","ABBEY","Acres","ACRES","Alley","ALLEY","Autoroute","AUT","Avenue","AVE","Avenue","AV","Bay","BAY","Beach","BEACH","Bend","BEND","Boulevard","BLVD","Boulevard","BOUL","building","By-pass","BYPASS","Byway","BYWAY","Campus","CAMPUS","Cape","CAPE","CAR","Carrefour","CARREF","Centre","CTR","Centre","C","Cercle","CERCLE","Chase","CHASE","Chemin","CH","Circle","CIR","Circuit","CIRCT","Close","CLOSE","Common","COMMON","Concession","CONC","Corners","CRNRS","Cour","COUR","Cours","COURS","Court","CRT","Cove","COVE","Crescent","CRES","Croissant","CROIS","Crossing","CROSS","Cul-de-sac","CDS","Dale","DALE","Dell","DELL","Diversion","DIVERS","Downs","DOWNS","Drive","DR","End","END","Esplanade","ESPL","Estates","ESTATE","Expressway","EXPY","Extension","EXTEN","Farm","FARM","Field","FIELD","Forest","FOREST","Freeway","FWY","Front","FRONT","Gardens","GDNS","Gate","GATE","Glade","GLADE","Glen","GLEN","Green","GREEN","Grounds","GRNDS","Grove","GROVE","Harbour","HARBR","Heath","HEATH","Heights","HTS","Highlands","HGHLDS","Highway","HWY","Hill","HILL","Hollow","HOLLOW","Impasse","IMP","Inlet","INLET","Island","ISLAND","Key","KEY","Knoll","KNOLL","Landing","LANDNG","Lane","LANE","Limits","LMTS","Line","LINE","Link","LINK","Lookout","LKOUT","Loop","LOOP","Mall","MALL","Manor","MANOR","Maze","MAZE","Meadow","MEADOW","Mews","MEWS","Moor","MOOR","Mount","MOUNT","Mountain","MTN","Orchard","ORCH","Parade","PARADE","Parc","PARC","Park","PK","Parkway","PKY","Passage","PASS","Path","PATH","Pathway","PTWAY","Pines","PINES","Place","PL","Place","PLACE","Plateau","PLAT","Plaza","PLAZA","Point","PT","Pointe","POINTE","Port","PORT","Private","PVT","Promenade","PROM","Quai","QUAI","Quay","QUAY","Ramp","RAMP","Rang","RANG","Range","RG","Ridge","RIDGE","Rise","RISE","Road","RD","Rond-point","RDPT","Route","RTE","Row","ROW","Rue","RUE","Ruelle","RLE","Run","RUN","Sentier","SENT","Square","SQ","Street","ST","Subdivision","SUBDIV","Terrace","TERR","Terrasse","TSSE","Thicket","THICK","Towers","TOWERS","Townline","TLINE","Trail","TRAIL","Turnabout","TRNABT","Vale","VALE","Via","VIA","View","VIEW","Village","VILLGE","Villas","VILLAS","Vista","VISTA","Voie","VOIE","Walk","WALK","Way","WAY","Wharf","WHARF","Wood","WOOD","Wynd","WYND"];f="(?: \\p{L} | [\\s\\-\\.])+ ";e=new c("Addressee","(?<addressee> "+f+")",{valid_tests:{"Mary Swånson":{addressee:"Mary Swånson"}},invalid_tests:["100 Sampsonite Drive"]});s=new c("Care of (c/o)","(?: c/o | ℅) \\s+ (?<care_of> "+f+")",{valid_tests:{"c/o Sinterklaas":{care_of:"Sinterklaas"}},invalid_tests:["no c/o? fine. be that way."]});A="(?<street_number> \\d+) \\s+\n(?<street_name> (?: \\p{L}|[\\.\\s\\-'])+? )";r=new c("Plain street",A,{valid_tests:{"42 Wallaby Lane":{street_number:"42",street_name:"Wallaby Lane"},"100 Hûntley Street":{street_number:"100",street_name:"Hûntley Street"}},invalid_tests:["Wallaby 12 Lane","Suite 100, 42 Wallaby Lane","42 Wallaby Lane, fl. 2-00"]});C="(?:\n (?:\n (?: apt\\.? | apartment | unit | suite | floor | fl\\.? | app | bureau )\n \\s* (?: \\s [#] | no\\.? | number s+ )?\n | [#]\n | no\\.\n )\n \\s*\n [\\d\\w]+\n|\n [\\d\\w]+\n \\s*\n (?: floor | fl\\. )\n)";p=new c("Unit - Street","(?<suite> "+C+"|\\d+) \\s* [\\-,\\s] \\s* "+A,{valid_tests:{"Suite 1100a - 42 Wallaby Ave.":{suite:"Suite 1100a",street_number:"42",street_name:"Wallaby Ave."}},invalid_tests:["100 Wish Line, Unit #212","Any street with no unit"]});m=new c("Street - Unit",""+A+" \\s* [,\\-]? \\s* (?<suite> "+C+")",{valid_tests:{"42 Wallaby Ave., Suite 1100A":{suite:"Suite 1100A",street_number:"42",street_name:"Wallaby Ave."},"1 Rainy Road #115":{suite:"#115",street_number:"1",street_name:"Rainy Road"}},invalid_tests:["100 100 100","Any street without a given unit"]});o=new c("Post Office Box","(?<po_box>P\\.?\\s* O\\.?\\s* BOX \\s* \\s* \\d+ \\s* ,? \\s*\n(?: (?:stn\\.?|station|rpo\\.?|rr\\.?) \\s* \\w+)? )",{valid_tests:{"PO Box 1200":{po_box:"PO Box 1200"},"P.O. Box 1200 stn A":{po_box:"P.O. Box 1200 stn A"},"P.O. Box 39, RR1":{po_box:"P.O. Box 39, RR1"}},invalid_tests:["No PO"]});n=new c("Additional Address Anformation","(?<additional_address_info> .+)",{valid_tests:{Anything:{additional_address_info:"Anything"}},invalid_tests:[""]});d=new c("Suite number","(?<suite> "+C+")",{valid_tests:{"Suite # 1024":{suite:"Suite # 1024"}},invalid_tests:["10 10"]});i=new c("Municipality and Province","(?<municipality> (?:\\p{L}|[\\-'\\s\\.])+?) \\s* ,? \\s* (?<province> "+h.join("|")+")",{valid_tests:{"Bras-d'Or, NS":{municipality:"Bras-d'Or",province:"NS"},"St. Pétersberg, ON":{municipality:"St. Pétersberg",province:"ON"},"Hudsonville, QC":{municipality:"Hudsonville",province:"QC"}},invalid_tests:["St. Peteresberg, Peterborough, 10005"]});l=new c("Postal code","(?<postal> s*\\w\\d\\w\\s*\\d\\w\\d)",{valid_tests:{H0H0H0:{postal:"H0H0H0"},"H0H 0H0":{postal:"H0H 0H0"}},invalid_tests:["HoH 0H0","HoH 0ü0"]});t=new c("Municipality, province and postal code",""+i.expression+" (?: \\s* ,? \\s* "+l.expression+")?",{valid_tests:{"One, QC, M5R 1V2":{municipality:"One",province:"QC",postal:"M5R 1V2"},"TreeTree, MB":{municipality:"TreeTree",province:"MB",postal:void 0}},invalid_tests:["Two, Two, Two"]});_.prototype.expected_fields=function(){return{suite:"",addressee:"",care_of:"",street_number:"",street_name:"",additional_address_info:"",po_box:"",municipality:"",province:"",postal:"",country:"Canada"}};_.prototype.line_strategies=function(){var a,c;a=new u;c=r.or(p).or(m).or(o).or(d);a.add(e.optional(),s.optional(),c.optional(),c,i,l);a.add(e.optional(),s.optional(),c.optional(),c,t);a.add(e,n.optional(),s.optional(),c.optional(),c,i,l);a.add(e,n.optional(),s.optional(),c.optional(),c,t);return a.all()};return _}(f);(new h).register();var g;g=function(){e.prototype.AddressStrategy=f;e.prototype.LineMatcher=c;e.prototype.LineMatcherStrategy=u;e.prototype.Version=n;function e(){}e.prototype.parse=function(e,s){if(s==null){s={}}if(!a.isString(e)){throw new Error("Address must be a string, got "+typeof e+".")}return f.do_parse_address(e,s)};return e}();return new g});