ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 2.34 kB
JavaScript
var Measurement=require("./Measurement.js");var TemperatureUnit=function(e){this.unit="celsius";this.amount=0;this.aliases=TemperatureUnit.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()==="temperature"){this.amount=TemperatureUnit.convert(this.unit,e.amount.getUnit(),e.amount.getAmount())}else{throw"Cannot convert unit "+e.amount.unit+" to a temperature"}}else if(typeof e.amount!=="undefined"){this.amount=parseFloat(e.amount)}}};TemperatureUnit.prototype=new Measurement;TemperatureUnit.prototype.parent=Measurement;TemperatureUnit.prototype.constructor=TemperatureUnit;TemperatureUnit.prototype.getMeasure=function(){return"temperature"};TemperatureUnit.aliases={Celsius:"celsius",celsius:"celsius",C:"celsius",centegrade:"celsius",Centegrade:"celsius",centigrade:"celsius",Centigrade:"celsius",fahrenheit:"fahrenheit",Fahrenheit:"fahrenheit",F:"fahrenheit",kelvin:"kelvin",K:"kelvin",Kelvin:"kelvin","°F":"fahrenheit","℉":"fahrenheit","℃":"celsius","°C":"celsius"};TemperatureUnit.prototype.convert=function(e){if(!e||typeof TemperatureUnit.ratios[this.normalizeUnits(e)]==="undefined"){return undefined}return new TemperatureUnit({unit:e,amount:this})};TemperatureUnit.convert=function(e,t,i){var n=0;t=TemperatureUnit.aliases[t]||t;e=TemperatureUnit.aliases[e]||e;if(t===e)return i;else if(t==="celsius"){if(e==="fahrenheit"){n=i*9/5+32}else if(e==="kelvin"){n=i+273.15}}else if(t==="fahrenheit"){if(e==="celsius"){n=5/9*(i-32)}else if(e==="kelvin"){n=(i+459.67)*5/9}}else if(t==="kelvin"){if(e==="celsius"){n=i-273.15}else if(e==="fahrenheit"){n=i*9/5-459.67}}return n};TemperatureUnit.prototype.scale=function(e){return new TemperatureUnit({unit:this.unit,amount:this.amount})};TemperatureUnit.getMeasures=function(){return["celsius","kelvin","fahrenheit"]};TemperatureUnit.metricToUScustomary={celsius:"fahrenheit"};TemperatureUnit.usCustomaryToMetric={fahrenheit:"celsius"};TemperatureUnit.prototype.localize=function(e){var t;if(e==="en-US"){t=TemperatureUnit.metricToUScustomary[this.unit]||this.unit}else{t=TemperatureUnit.usCustomaryToMetric[this.unit]||this.unit}return new TemperatureUnit({unit:t,amount:this})};Measurement._constructors["temperature"]=TemperatureUnit;module.exports=TemperatureUnit;