UNPKG

ilib

Version:

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

1 lines 5.13 kB
var ilib=require("./ilib.js");var Utils=require("./Utils.js");var JSUtils=require("./JSUtils.js");var Locale=require("./Locale.js");var LocaleInfo=require("./LocaleInfo.js");var DateFmt=require("./DateFmt.js");var IString=require("./IString.js");var ResBundle=require("./ResBundle.js");var DurationFmt=function(t){var e=true;var i=undefined;this.locale=new Locale;this.length="short";this.style="text";if(t){if(t.locale){this.locale=typeof t.locale==="string"?new Locale(t.locale):t.locale}if(t.length){if(t.length==="short"||t.length==="medium"||t.length==="long"||t.length==="full"){this.length=t.length}}if(t.style){if(t.style==="text"||t.style==="clock"){this.style=t.style}}if(typeof t.sync!=="undefined"){e=t.sync==true}if(typeof t.useNative==="boolean"){this.useNative=t.useNative}i=t.loadParams}new ResBundle({locale:this.locale,name:"sysres",sync:e,loadParams:i,onLoad:ilib.bind(this,function(n){switch(this.length){case"short":this.components={year:n.getString("#{num}y"),month:n.getString("#{num}m","durationShortMonths"),week:n.getString("#{num}w"),day:n.getString("#{num}d"),hour:n.getString("#{num}h"),minute:n.getString("#{num}m","durationShortMinutes"),second:n.getString("#{num}s"),millisecond:n.getString("#{num}m","durationShortMillis"),separator:n.getString(" ","separatorShort"),finalSeparator:""};break;case"medium":this.components={year:n.getString("1#1 yr|#{num} yrs","durationMediumYears"),month:n.getString("1#1 mo|#{num} mos"),week:n.getString("1#1 wk|#{num} wks","durationMediumWeeks"),day:n.getString("1#1 dy|#{num} dys"),hour:n.getString("1#1 hr|#{num} hrs","durationMediumHours"),minute:n.getString("1#1 mi|#{num} min"),second:n.getString("1#1 se|#{num} sec"),millisecond:n.getString("#{num} ms"),separator:n.getString(" ","separatorMedium"),finalSeparator:""};break;case"long":this.components={year:n.getString("1#1 yr|#{num} yrs"),month:n.getString("1#1 mon|#{num} mons"),week:n.getString("1#1 wk|#{num} wks"),day:n.getString("1#1 day|#{num} days","durationLongDays"),hour:n.getString("1#1 hr|#{num} hrs"),minute:n.getString("1#1 min|#{num} min"),second:n.getString("1#1 sec|#{num} sec"),millisecond:n.getString("#{num} ms"),separator:n.getString(", ","separatorLong"),finalSeparator:""};break;case"full":this.components={year:n.getString("1#1 year|#{num} years"),month:n.getString("1#1 month|#{num} months"),week:n.getString("1#1 week|#{num} weeks"),day:n.getString("1#1 day|#{num} days"),hour:n.getString("1#1 hour|#{num} hours"),minute:n.getString("1#1 minute|#{num} minutes"),second:n.getString("1#1 second|#{num} seconds"),millisecond:n.getString("1#1 millisecond|#{num} milliseconds"),separator:n.getString(", ","separatorFull"),finalSeparator:n.getString(" and ","finalSeparatorFull")};break}if(this.style==="clock"){new DateFmt({locale:this.locale,calendar:"gregorian",type:"time",time:"ms",sync:e,loadParams:i,useNative:this.useNative,onLoad:ilib.bind(this,function(n){this.timeFmtMS=n;new DateFmt({locale:this.locale,calendar:"gregorian",type:"time",time:"hm",sync:e,loadParams:i,useNative:this.useNative,onLoad:ilib.bind(this,function(n){this.timeFmtHM=n;new DateFmt({locale:this.locale,calendar:"gregorian",type:"time",time:"hms",sync:e,loadParams:i,useNative:this.useNative,onLoad:ilib.bind(this,function(e){this.timeFmtHMS=e;this.timeFmtHM.template=this.timeFmtHM.template.replace(/hh?/,"H");this.timeFmtHM.templateArr=this.timeFmtHM._tokenize(this.timeFmtHM.template);this.timeFmtHMS.template=this.timeFmtHMS.template.replace(/hh?/,"H");this.timeFmtHMS.templateArr=this.timeFmtHMS._tokenize(this.timeFmtHMS.template);this._init(this.timeFmtHM.locinfo,t&&t.onLoad)})})})})})});return}new LocaleInfo(this.locale,{sync:e,loadParams:i,onLoad:ilib.bind(this,function(e){this._init(e,t&&t.onLoad)})})})})};DurationFmt.complist={text:["year","month","week","day","hour","minute","second","millisecond"],clock:["year","month","week","day"]};DurationFmt.prototype._mapDigits=function(t){if(this.useNative&&this.digits){return JSUtils.mapString(t.toString(),this.digits)}return t};DurationFmt.prototype._init=function(t,e){var i;if(typeof this.useNative==="boolean"){if(this.useNative){i=t.getNativeDigits();if(i){this.digits=i}}}else if(t.getDigitsStyle()==="native"){i=t.getNativeDigits();if(i){this.useNative=true;this.digits=i}}if(typeof e==="function"){e(this)}};DurationFmt.prototype.format=function(t){var e,i,n,r,s=true,o="";i=DurationFmt.complist[this.style];for(e=i.length-1;e>=0;e--){if(typeof t[i[e]]!=="undefined"&&t[i[e]]!=0){if(o.length>0){o=(this.length==="full"&&s?this.components.finalSeparator:this.components.separator)+o;s=false}o=this.components[i[e]].formatChoice(t[i[e]],{num:this._mapDigits(t[i[e]])})+o}}if(this.style==="clock"){if(typeof t.hour!=="undefined"){r=typeof t.second!=="undefined"?this.timeFmtHMS:this.timeFmtHM}else{r=this.timeFmtMS}if(o.length>0){o+=this.components.separator}o+=r._formatTemplate(t,r.templateArr)}return new IString(o)};DurationFmt.prototype.getLocale=function(){return this.locale};DurationFmt.prototype.getLength=function(){return this.length};DurationFmt.prototype.getStyle=function(){return this.style};module.exports=DurationFmt;