ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 4.24 kB
JavaScript
var Measurement=require("./Measurement.js");var TimeUnit=function(e){this.unit="second";this.amount=0;this.aliases=TimeUnit.aliases;if(e){if(typeof e.unit!=="undefined"){this.originalUnit=e.unit;this.unit=this.aliases[e.unit]||e.unit}if(typeof e.amount==="object"){if(e.amount.getMeasure()==="time"){this.amount=TimeUnit.convert(this.unit,e.amount.getUnit(),e.amount.getAmount())}else{throw"Cannot convert units "+e.amount.unit+" to a time"}}else if(typeof e.amount!=="undefined"){this.amount=parseFloat(e.amount)}}if(typeof TimeUnit.ratios[this.unit]==="undefined"){throw"Unknown unit: "+e.unit}};TimeUnit.prototype=new Measurement;TimeUnit.prototype.parent=Measurement;TimeUnit.prototype.constructor=TimeUnit;TimeUnit.ratios={nanosecond:[1,1,.001,1e-6,1e-9,1.6667e-11,2.7778e-13,1.1574e-14,1.6534e-15,3.8027e-16,3.1689e-17,3.1689e-18,3.1689e-19],microsecond:[2,1e3,1,.001,1e-6,1.6667e-8,2.7778e-10,1.1574e-11,1.6534e-12,3.8027e-13,3.1689e-14,3.1689e-15,3.1689e-16],millisecond:[3,1e6,1e3,1,.001,16667e-9,2.7778e-7,1.1574e-8,1.6534e-9,3.8027e-10,3.1689e-11,3.1689e-12,3.1689e-13],second:[4,1e9,1e6,1e3,1,.0166667,277778e-9,11574e-9,16534e-10,3.8027e-7,3.1689e-8,3.1689e-9,3.1689e-10],minute:[5,6e10,6e7,6e4,60,1,.0166667,694444e-9,99206e-9,22816e-9,19013e-10,1.9013e-7,1.9013e-8],hour:[6,36e11,36e8,36e5,3600,60,1,.0416667,.00595238,.00136895,11408e-8,11408e-9,11408e-10],day:[7,864e11,864e8,864e5,86400,1440,24,1,.142857,.0328549,.00273791,273791e-9,27379e-9],week:[8,6048e11,6048e8,6048e5,604800,10080,168,7,1,.229984,.0191654,.00191654,191654e-9],month:[9,263e13,263e10,263e7,263e4,43829.1,730.484,30.4368,4.34812,1,.0833333,.00833333,833333e-9],year:[10,3156e13,3156e10,3156e7,3156e4,525949,8765.81,365.242,52.1775,12,1,.1,.01],decade:[11,3156e14,3156e11,3156e8,3156e5,5259e3,87658.1,3652.42,521.775,120,10,1,.1],century:[12,3156e15,3156e15,3156e9,3156e6,5259e4,876581,36524.2,5217.75,1200,100,10,1]};TimeUnit.prototype.getMeasure=function(){return"time"};TimeUnit.prototype.convert=function(e){if(!e||typeof TimeUnit.ratios[this.normalizeUnits(e)]==="undefined"){return undefined}return new TimeUnit({unit:e,amount:this})};TimeUnit.aliases={ns:"nanosecond",NS:"nanosecond",nS:"nanosecond",Ns:"nanosecond",Nanosecond:"nanosecond",Nanoseconds:"nanosecond",nanosecond:"nanosecond",nanoseconds:"nanosecond",NanoSecond:"nanosecond",NanoSeconds:"nanosecond","μs":"microsecond","μS":"microsecond",microsecond:"microsecond",microseconds:"microsecond",Microsecond:"microsecond",Microseconds:"microsecond",MicroSecond:"microsecond",MicroSeconds:"microsecond",ms:"millisecond",MS:"millisecond",mS:"millisecond",Ms:"millisecond",millisecond:"millisecond",milliseconds:"millisecond",Millisecond:"millisecond",Milliseconds:"millisecond",MilliSecond:"millisecond",MilliSeconds:"millisecond",s:"second",S:"second",sec:"second",second:"second",seconds:"second",Second:"second",Seconds:"second",min:"minute",Min:"minute",minute:"minute",minutes:"minute",Minute:"minute",Minutes:"minute",h:"hour",H:"hour",hr:"hour",Hr:"hour",hR:"hour",HR:"hour",hour:"hour",hours:"hour",Hour:"hour",Hours:"hour",Hrs:"hour",hrs:"hour",day:"day",days:"day",Day:"day",Days:"day",week:"week",weeks:"week",Week:"week",Weeks:"week",month:"month",Month:"month",months:"month",Months:"month",year:"year",years:"year",Year:"year",Years:"year",yr:"year",Yr:"year",yrs:"year",Yrs:"year",decade:"decade",decades:"decade",Decade:"decade",Decades:"decade",century:"century",centuries:"century",Century:"century",Centuries:"century"};TimeUnit.convert=function(e,n,i){n=TimeUnit.aliases[n]||n;e=TimeUnit.aliases[e]||e;var o=TimeUnit.ratios[n];var t=TimeUnit.ratios[e];if(typeof n==="undefined"||typeof e==="undefined"){return undefined}return i*o[t[0]]};TimeUnit.prototype.localize=function(e){return new TimeUnit({unit:this.unit,amount:this.amount})};TimeUnit.prototype.scale=function(e){var n=TimeUnit.ratios[this.unit];var i=this.amount;var o=this.unit;var t;i=0x10000000000000000;for(var s in TimeUnit.ratios){t=TimeUnit.ratios[s][0];var r=this.amount*n[t];if(r>=1&&r<i){i=r;o=s}}return new TimeUnit({unit:o,amount:i})};TimeUnit.getMeasures=function(){var e=[];for(var n in TimeUnit.ratios){e.push(n)}return e};Measurement._constructors["time"]=TimeUnit;module.exports=TimeUnit;