ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 5.24 kB
JavaScript
var Measurement=require("./Measurement.js");var VelocityUnit=function(e){this.unit="meters/second";this.amount=0;this.aliases=VelocityUnit.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()==="speed"){this.amount=VelocityUnit.convert(this.unit,e.amount.getUnit(),e.amount.getAmount())}else{throw"Cannot convert units "+e.amount.unit+" to a speed"}}else if(typeof e.amount!=="undefined"){this.amount=parseFloat(e.amount)}}if(typeof VelocityUnit.ratios[this.unit]==="undefined"){throw"Unknown unit: "+e.unit}};VelocityUnit.prototype=new Measurement;VelocityUnit.prototype.parent=Measurement;VelocityUnit.prototype.constructor=VelocityUnit;VelocityUnit.ratios={"kilometer/hour":[1,1,.911344,.621371,.539957,.277778,277778e-9,.000172603109],"feet/second":[2,1.09728,1,.681818,.592484,.3048,3048e-7,.000189393939],"miles/hour":[3,1.60934,1.46667,1,.868976,.44704,44704e-8,.000277777778],knot:[4,1.852,1.68781,1.15078,1,.514444,514444e-9,.000319660958],"meters/second":[5,3.6,3.28084,2.236936,1.94384,1,.001,.000621371192],"kilometer/second":[6,3600,3280.8399,2236.93629,1943.84449,1e3,1,.621371192],"miles/second":[7,5793.6384,5280,3600,3128.31447,1609.344,1.609344,1]};VelocityUnit.metricSystem={"kilometer/hour":1,"meters/second":5,"kilometer/second":6};VelocityUnit.imperialSystem={"feet/second":2,"miles/hour":3,knot:4,"miles/second":7};VelocityUnit.uscustomarySystem={"feet/second":2,"miles/hour":3,knot:4,"miles/second":7};VelocityUnit.metricToUScustomary={"kilometer/hour":"miles/hour","meters/second":"feet/second","kilometer/second":"miles/second"};VelocityUnit.UScustomaryTometric={"miles/hour":"kilometer/hour","feet/second":"meters/second","miles/second":"kilometer/second",knot:"kilometer/hour"};VelocityUnit.prototype.getMeasure=function(){return"speed"};VelocityUnit.prototype.convert=function(e){if(!e||typeof VelocityUnit.ratios[this.normalizeUnits(e)]==="undefined"){return undefined}return new VelocityUnit({unit:e,amount:this})};VelocityUnit.prototype.scale=function(e){var t;if(e==="metric"||typeof e==="undefined"&&typeof VelocityUnit.metricSystem[this.unit]!=="undefined"){t=VelocityUnit.metricSystem}else if(e==="imperial"||typeof e==="undefined"&&typeof VelocityUnit.imperialSystem[this.unit]!=="undefined"){t=VelocityUnit.imperialSystem}else if(e==="uscustomary"||typeof e==="undefined"&&typeof VelocityUnit.uscustomarySystem[this.unit]!=="undefined"){t=VelocityUnit.uscustomarySystem}else{return new VelocityUnit({unit:this.unit,amount:this.amount})}var i=this.amount;var o=this.unit;var n=VelocityUnit.ratios[this.unit];i=0x10000000000000000;for(var s in t){var r=this.amount*n[t[s]];if(r>=1&&r<i){i=r;o=s}}return new VelocityUnit({unit:o,amount:i})};VelocityUnit.prototype.localize=function(e){var t;if(e==="en-US"||e==="en-GB"){t=VelocityUnit.metricToUScustomary[this.unit]||this.unit}else{t=VelocityUnit.UScustomaryTometric[this.unit]||this.unit}return new VelocityUnit({unit:t,amount:this})};VelocityUnit.aliases={"foot/sec":"feet/second","foot/s":"feet/second","feet/s":"feet/second","f/s":"feet/second","feet/second":"feet/second","feet/sec":"feet/second","meter/sec":"meters/second","meter/s":"meters/second","meters/s":"meters/second","metre/sec":"meters/second","metre/s":"meters/second","metres/s":"meters/second","mt/sec":"meters/second","m/sec":"meters/second","mt/s":"meters/second","m/s":"meters/second",mps:"meters/second","meters/second":"meters/second","meters/sec":"meters/second","kilometer/hour":"kilometer/hour","km/hour":"kilometer/hour","kilometers/hour":"kilometer/hour",kmh:"kilometer/hour","km/h":"kilometer/hour","kilometer/h":"kilometer/hour","kilometers/h":"kilometer/hour","km/hr":"kilometer/hour","kilometer/hr":"kilometer/hour","kilometers/hr":"kilometer/hour","kilometre/hour":"kilometer/hour",mph:"miles/hour","mile/hour":"miles/hour","mile/hr":"miles/hour","mile/h":"miles/hour","miles/h":"miles/hour","miles/hr":"miles/hour","miles/hour":"miles/hour",kn:"knot",kt:"knot",kts:"knot",knots:"knot","nm/h":"knot","nm/hr":"knot","nauticalmile/h":"knot","nauticalmile/hr":"knot","nauticalmile/hour":"knot","nauticalmiles/hr":"knot","nauticalmiles/hour":"knot",knot:"knot","kilometer/second":"kilometer/second","kilometer/sec":"kilometer/second","kilometre/sec":"kilometer/second","Kilometre/sec":"kilometer/second","kilometers/second":"kilometer/second","kilometers/sec":"kilometer/second","kilometres/sec":"kilometer/second","Kilometres/sec":"kilometer/second","km/sec":"kilometer/second","Km/s":"kilometer/second","km/s":"kilometer/second","miles/second":"miles/second","miles/sec":"miles/second","miles/s":"miles/second","mile/s":"miles/second","mile/sec":"miles/second","Mile/s":"miles/second"};VelocityUnit.convert=function(e,t,i){t=VelocityUnit.aliases[t]||t;e=VelocityUnit.aliases[e]||e;var o=VelocityUnit.ratios[t];var n=VelocityUnit.ratios[e];if(typeof t==="undefined"||typeof e==="undefined"){return undefined}var s=i*o[n[0]];return s};VelocityUnit.getMeasures=function(){var e=[];for(var t in VelocityUnit.ratios){e.push(t)}return e};Measurement._constructors["speed"]=VelocityUnit;Measurement._constructors["velocity"]=VelocityUnit;module.exports=VelocityUnit;