UNPKG

ilib

Version:

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

2 lines 1.79 kB
// !data list var ilib=require("../index.js"),Utils=require("./Utils.js"),Locale=require("./Locale.js"),styleMap={standard:"standard",conjunction:"standard",disjunction:"or",unit:"unit"},ListFmt=function(options){this.locale=new Locale(),this.sync=!0,this.style="standard",this.length="medium",this.loadParams={},options&&(options.type&&(this.type=options.type),options.locale&&(this.locale=options.locale),void 0!==options.sync&&(this.sync=!!options.sync),options.length&&(this.length=options.length),options.loadParams&&(this.loadParams=options.loadParams),options.style)&&styleMap[options.style]&&(this.style=styleMap[options.style]),Utils.loadData({name:"list.json",object:"ListFmt",locale:this.locale,sync:this.sync,loadParams:this.loadParams,callback:ilib.bind(this,function(fmtdata){(this.fmtdata=fmtdata)[this.style]||(this.style="standard"),options&&"function"==typeof options.onLoad&&options.onLoad(this)})})};ListFmt.prototype.format=function(items){if(!items||!ilib.isArray(items))return"";var formattedList,i,itemCount=items.length,fmtTemplate=this.fmtdata[this.style][this.length]||this.fmtdata[this.style],startFmt=fmtTemplate.start,middleFmt=fmtTemplate.middle,endFmt=fmtTemplate.end;if(0===itemCount)return"";if(1===itemCount)formattedList=items.toString();else if(2===itemCount)formattedList=(fmtTemplate=fmtTemplate[2]).replace("{0}",items[0]).replace("{1}",items[1]);else for(i=itemCount;0<=i;i--)i===itemCount?(formattedList=endFmt.replace("{0}",items[itemCount-2]).replace("{1}",items[itemCount-1]),i-=2):formattedList=(0===i?startFmt:middleFmt).replace("{0}",items[i]).replace("{1}",formattedList);return formattedList},ListFmt.prototype.getLocale=function(){return this.locale.getSpec()},ListFmt.prototype.getStyle=function(){return this.style},module.exports=ListFmt;