UNPKG

ilib

Version:

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

2 lines 2.2 kB
// !data currency var ilib=require("./ilib.js"),Utils=require("./Utils.js"),Locale=require("./Locale.js"),LocaleInfo=require("./LocaleInfo.js"),ResBundle=require("./ResBundle.js"),Currency=function(options){options?(options.code&&(this.code=options.code),options.locale&&(this.locale="string"==typeof options.locale?new Locale(options.locale):options.locale),options.sign&&(this.sign=options.sign),options.loadParams&&(this.loadParams=options.loadParams)):options={sync:!0},void 0===options.sync&&(options.sync=!0),this.locale=this.locale||new Locale(),void 0===ilib.data.currency?Utils.loadData({name:"currency.json",object:"Currency",locale:"-",sync:this.sync,loadParams:this.loadParams,callback:ilib.bind(this,function(currency){ilib.data.currency=currency,this._loadLocinfo(options)})}):this._loadLocinfo(options)};Currency.getAvailableCurrencies=function(){var cur,ret=[],currencies=new ResBundle({name:"currency"}).getResObj();for(cur in currencies)cur&&currencies[cur]&&ret.push(cur);return ret},Currency.prototype={_loadLocinfo:function(options){new LocaleInfo(this.locale,{sync:options.sync,loadParams:options.loadParams,onLoad:ilib.bind(this,function(li){var currInfo;if(this.locinfo=li,this.code){if(!(currInfo=ilib.data.currency[this.code])){if(options.sync)throw"currency "+this.code+" is unknown";if("function"==typeof options.onLoad)return void options.onLoad(void 0)}}else if(this.sign)if(void 0!==(currInfo=ilib.data.currency[this.sign]))this.code=this.sign;else if(this.code=this.locinfo.getCurrency(),(currInfo=ilib.data.currency[this.code]).sign!==this.sign)for(var cur in ilib.data.currency)if(cur&&ilib.data.currency[cur]&&(currInfo=ilib.data.currency[cur]).sign===this.sign){this.code=cur;break}currInfo&&this.code||(this.code=this.locinfo.getCurrency(),currInfo=ilib.data.currency[this.code]),this.name=currInfo.name,this.fractionDigits=currInfo.decimals,this.sign=currInfo.sign,"function"==typeof options.onLoad&&options.onLoad(this)})})},getCode:function(){return this.code},getFractionDigits:function(){return this.fractionDigits},getSign:function(){return this.sign},getName:function(){return this.name},getLocale:function(){return this.locale}},module.exports=Currency;