UNPKG

ilib

Version:

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

2 lines 2.06 kB
// !data phoneloc var ilib=require("./ilib.js"),Utils=require("./Utils.js"),Locale=require("./Locale.js"),PhoneLocale=function(options){var region,mcc,cc,locale,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]),void 0!==cc&&(region=this.mappings.cc2reg[cc]),region||(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"CA":case"AG":case"BS":case"BB":case"DM":case"DO":case"GD":case"JM":case"KN":case"LC":case"VC":case"TT":case"AI":case"BM":case"VG":case"KY":case"MS":case"TC":case"AS":case"VI":case"PR":case"MP":case"T:":case"GU":norm="US";break;case"IT":case"SM":case"VA":norm="IT";break;case"FR":case"GF":case"MQ":case"GP":case"BL":case"MF":case"RE":norm="FR";break;default:norm=region}return norm},module.exports=PhoneLocale;