UNPKG

ilib

Version:

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

1 lines 1.9 kB
var ilib=require("./ilib.js");var Utils=require("./Utils.js");var Locale=require("./Locale.js");var LocaleInfo=require("./LocaleInfo.js");var ResBundle=require("./ResBundle.js");var Currency=function(i){this.sync=true;if(i){if(i.code){this.code=i.code}if(i.locale){this.locale=typeof i.locale==="string"?new Locale(i.locale):i.locale}if(i.sign){this.sign=i.sign}if(typeof i.sync!=="undefined"){this.sync=i.sync}if(i.loadParams){this.loadParams=i.loadParams}}this.locale=this.locale||new Locale;if(typeof ilib.data.currency==="undefined"){Utils.loadData({name:"currency.json",object:Currency,locale:"-",sync:this.sync,loadParams:this.loadParams,callback:ilib.bind(this,function(e){ilib.data.currency=e;this._loadLocinfo(i&&i.onLoad)})})}else{this._loadLocinfo(i&&i.onLoad)}};Currency.getAvailableCurrencies=function(){var i=[],e,n=new ResBundle({name:"currency"}).getResObj();for(e in n){if(e&&n[e]){i.push(e)}}return i};Currency.prototype={_loadLocinfo:function(i){new LocaleInfo(this.locale,{onLoad:ilib.bind(this,function(e){var n;this.locinfo=e;if(this.code){n=ilib.data.currency[this.code];if(!n){throw"currency "+this.code+" is unknown"}}else if(this.sign){n=ilib.data.currency[this.sign];if(typeof n!=="undefined"){this.code=this.sign}else{this.code=this.locinfo.getCurrency();n=ilib.data.currency[this.code];if(n.sign!==this.sign){for(var t in ilib.data.currency){if(t&&ilib.data.currency[t]){n=ilib.data.currency[t];if(n.sign===this.sign){this.code=t;break}}}}}}if(!n||!this.code){this.code=this.locinfo.getCurrency();n=ilib.data.currency[this.code]}this.name=n.name;this.fractionDigits=n.decimals;this.sign=n.sign;if(typeof i==="function"){i(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;