UNPKG

ilib

Version:

iLib is a cross-engine library of internationalization (i18n) classes written in pure JS

2 lines 2.4 kB
// !data phoneloc var ilib=require("../index.js"),Utils=require("./Utils.js"),Locale=require("./Locale.js"),PhoneLocale=function(options){var region,mcc,cc,sync=!0,loadParams={},locale=options&&options.locale||ilib.getLocale();this.parent.call(this,locale),region=this.region,options&&(void 0!==options.mcc&&(mcc=options.mcc),void 0!==options.countryCode&&(cc=options.countryCode),void 0!==options.sync&&(sync=!!options.sync),options.loadParams)&&(loadParams=options.loadParams),Utils.loadData({name:"phoneloc.json",object:"PhoneLocale",nonlocale:!0,sync:sync,loadParams:loadParams,callback:ilib.bind(this,function(data){this.mappings=data,void 0!==mcc&&(region=this.mappings.mcc2reg[mcc]),region=(region=void 0!==cc?this.mappings.cc2reg[cc]:region)||"XX",this.region=this._normPhoneReg(region),this._genSpec(),options&&"function"==typeof options.onLoad&&options.onLoad(this)})})};PhoneLocale.prototype=new Locale(),PhoneLocale.prototype.parent=Locale,(PhoneLocale.prototype.constructor=PhoneLocale).prototype._mapMCCtoRegion=function(mcc){if(mcc)return this.mappings.mcc2reg&&this.mappings.mcc2reg[mcc]||"XX"},PhoneLocale.prototype._mapCCtoRegion=function(cc){if(cc)return this.mappings.cc2reg&&this.mappings.cc2reg[cc]||"XX"},PhoneLocale.prototype._mapRegiontoCC=function(region){if(region)return this.mappings.reg2cc&&this.mappings.reg2cc[region]||"0"},PhoneLocale.prototype._mapAreatoRegion=function(cc,area){if(cc)return cc in this.mappings.area2reg?this.mappings.area2reg[cc][area]||this.mappings.area2reg[cc].default:this.mappings.cc2reg[cc]},PhoneLocale.prototype._normPhoneReg=function(region){var norm;switch(region){case"US":case"AG":case"AI":case"AS":case"BB":case"BM":case"BS":case"CA":case"DM":case"DO":case"GD":case"GU":case"JM":case"KN":case"KY":case"LC":case"MP":case"MS":case"PR":case"SX":case"TC":case"TT":case"VC":case"VG":case"VI":norm="US";break;case"FR":case"GF":case"MQ":case"GP":case"BL":case"MF":case"RE":case"YT":norm="FR";break;case"IT":case"SM":case"VA":norm="IT";break;case"GB":case"GG":case"IM":case"JE":norm="GB";break;case"RU":case"KZ":norm="RU";break;case"NO":case"SJ":norm="NO";break;case"AU":case"CC":case"CX":norm="AU";break;case"MA":case"EH":norm="MA";break;case"SH":case"TA":norm="SH";break;case"FI":case"AX":norm="FI";break;case"GP":case"BL":case"MF":norm="GP";break;case"CW":case"BQ":norm="CW";break;default:norm=region}return norm},module.exports=PhoneLocale;