ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 2.18 kB
JavaScript
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 IString=require("./IString.js");var NumFmt=require("./NumFmt.js");var UnitFmt=function(t){var e=true,i=undefined;this.length="long";this.scale=true;this.measurementType="undefined";this.convert=true;this.locale=new Locale;if(t){if(t.locale){this.locale=typeof t.locale==="string"?new Locale(t.locale):t.locale}if(typeof t.sync==="boolean"){e=t.sync}if(typeof t.loadParams!=="undefined"){i=t.loadParams}if(t.length){this.length=t.length}if(typeof t.autoScale==="boolean"){this.scale=t.autoScale}if(typeof t.autoConvert==="boolean"){this.convert=t.autoConvert}if(typeof t.useNative==="boolean"){this.useNative=t.useNative}if(t.measurementSystem){this.measurementSystem=t.measurementSystem}if(typeof t.maxFractionDigits==="number"){this.maxFractionDigits=t.maxFractionDigits}if(typeof t.minFractionDigits==="number"){this.minFractionDigits=t.minFractionDigits}this.roundingMode=t.roundingMode}if(!UnitFmt.cache){UnitFmt.cache={}}Utils.loadData({object:UnitFmt,locale:this.locale,name:"unitfmt.json",sync:e,loadParams:i,callback:ilib.bind(this,function(n){var a=n;this.template=a["unitfmt"][this.length];new NumFmt({locale:this.locale,useNative:this.useNative,maxFractionDigits:this.maxFractionDigits,minFractionDigits:this.minFractionDigits,roundingMode:this.roundingMode,sync:e,loadParams:i,onLoad:ilib.bind(this,function(e){this.numFmt=e;if(t&&typeof t.onLoad==="function"){t.onLoad(this)}})})})})};UnitFmt.prototype={getLocale:function(){return this.locale},getTemplate:function(){return this.template},toString:function(){return this.getTemplate()},getScale:function(){return this.scale},getMeasurementSystem:function(){return this.measurementSystem},format:function(t){var e=this.convert?t.localize(this.locale.getSpec()):t;e=this.scale?e.scale(this.measurementSystem):e;var i=new IString(this.template[e.getUnit()]);i.setLocale(this.locale,true,undefined,undefined);i=i.formatChoice(e.amount,{n:this.numFmt.format(e.amount)});return i.length>0?i:e.amount+" "+e.unit}};module.exports=UnitFmt;