ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 5.19 kB
JavaScript
var Measurement=require("./Measurement.js");var MassUnit=function(t){this.unit="gram";this.amount=0;this.aliases=MassUnit.aliases;if(t){if(typeof t.unit!=="undefined"){this.originalUnit=t.unit;this.unit=this.aliases[t.unit]||t.unit}if(typeof t.amount==="object"){if(t.amount.getMeasure()==="mass"){this.amount=MassUnit.convert(this.unit,t.amount.getUnit(),t.amount.getAmount())}else{throw"Cannot convert units "+t.amount.unit+" to a mass"}}else if(typeof t.amount!=="undefined"){this.amount=parseFloat(t.amount)}}if(typeof MassUnit.ratios[this.unit]==="undefined"){throw"Unknown unit: "+t.unit}};MassUnit.prototype=new Measurement;MassUnit.prototype.parent=Measurement;MassUnit.prototype.constructor=MassUnit;MassUnit.ratios={microgram:[1,1,.001,1e-6,3.5274e-8,2.2046e-9,1e-9,1.5747e-10,1.1023e-12,1e-12,9.8421e-13],milligram:[2,1e3,1,.001,35274e-9,22046e-10,1e-6,1.5747e-7,1.1023e-9,1e-9,9.8421e-10],gram:[3,1e6,1e3,1,.035274,.00220462,.001,157473e-9,11023e-10,1e-6,9.8421e-7],ounce:[4,2835e4,28349.5,28.3495,1,.0625,.0283495,.00446429,3125e-8,2835e-8,27902e-9],pound:[5,4536e5,453592,453.592,16,1,.453592,.0714286,5e-4,453592e-9,446429e-9],kilogram:[6,1e9,1e6,1e3,35.274,2.20462,1,.157473,.00110231,.001,984207e-9],stone:[7,635e7,635e4,6350.29,224,14,6.35029,1,.007,.00635029,.00625],"short ton":[8,9072e8,9072e5,907185,32e3,2e3,907.185,142.857,1,.907185,.892857],"metric ton":[9,1e12,1e9,1e6,35274,2204.62,1e3,157.473,1.10231,1,.984207],"long ton":[10,1016e9,1016e6,1016e3,35840,2240,1016.05,160,1.12,1.01605,1]};MassUnit.metricSystem={microgram:1,milligram:2,gram:3,kilogram:6,"metric ton":9};MassUnit.imperialSystem={ounce:4,pound:5,stone:7,"long ton":10};MassUnit.uscustomarySystem={ounce:4,pound:5,"short ton":8};MassUnit.metricToUScustomary={microgram:"ounce",milligram:"ounce",gram:"ounce",kilogram:"pound","metric ton":"long ton"};MassUnit.metricToImperial={microgram:"ounce",milligram:"ounce",gram:"ounce",kilogram:"pound","metric ton":"short ton"};MassUnit.imperialToMetric={ounce:"gram",pound:"kilogram",stone:"kilogram","short ton":"metric ton"};MassUnit.imperialToUScustomary={ounce:"ounce",pound:"pound",stone:"stone","short ton":"long ton"};MassUnit.uScustomaryToImperial={ounce:"ounce",pound:"pound",stone:"stone","long ton":"short ton"};MassUnit.uScustomarylToMetric={ounce:"gram",pound:"kilogram",stone:"kilogram","long ton":"metric ton"};MassUnit.prototype.localize=function(t){var n;if(t==="en-US"){n=MassUnit.metricToUScustomary[this.unit]||MassUnit.imperialToUScustomary[this.unit]||this.unit}else if(t==="en-GB"){n=MassUnit.metricToImperial[this.unit]||MassUnit.uScustomaryToImperial[this.unit]||this.unit}else{n=MassUnit.uScustomarylToMetric[this.unit]||MassUnit.imperialToUScustomary[this.unit]||this.unit}return new MassUnit({unit:n,amount:this})};MassUnit.prototype.getMeasure=function(){return"mass"};MassUnit.prototype.convert=function(t){if(!t||typeof MassUnit.ratios[this.normalizeUnits(t)]==="undefined"){return undefined}return new MassUnit({unit:t,amount:this})};MassUnit.aliases={"µg":"microgram",microgram:"microgram",mcg:"microgram",milligram:"milligram",mg:"milligram",milligrams:"milligram",Milligram:"milligram",Milligrams:"milligram",MilliGram:"milligram",MilliGrams:"milligram",g:"gram",gram:"gram",grams:"gram",Gram:"gram",Grams:"gram",ounce:"ounce",oz:"ounce",Ounce:"ounce","℥":"ounce",pound:"pound",poundm:"pound","℔":"pound",lb:"pound",pounds:"pound",Pound:"pound",Pounds:"pound",kilogram:"kilogram",kg:"kilogram",kilograms:"kilogram","kilo grams":"kilogram","kilo gram":"kilogram",Kilogram:"kilogram",Kilograms:"kilogram",KiloGram:"kilogram",KiloGrams:"kilogram","Kilo gram":"kilogram","Kilo grams":"kilogram","Kilo Gram":"kilogram","Kilo Grams":"kilogram",stone:"stone",st:"stone",stones:"stone",Stone:"stone","short ton":"short ton","Short ton":"short ton","Short Ton":"short ton","metric ton":"metric ton",metricton:"metric ton",t:"metric ton",tonne:"metric ton",Tonne:"metric ton","Metric Ton":"metric ton",MetricTon:"metric ton","long ton":"long ton",longton:"long ton",Longton:"long ton","Long ton":"long ton","Long Ton":"long ton",ton:"long ton",Ton:"long ton"};MassUnit.convert=function(t,n,i){n=MassUnit.aliases[n]||n;t=MassUnit.aliases[t]||t;var o=MassUnit.ratios[n];var e=MassUnit.ratios[t];if(typeof n==="undefined"||typeof t==="undefined"){return undefined}return i*o[e[0]]};MassUnit.prototype.scale=function(t){var n;if(t==="metric"||typeof t==="undefined"&&typeof MassUnit.metricSystem[this.unit]!=="undefined"){n=MassUnit.metricSystem}else if(t==="imperial"||typeof t==="undefined"&&typeof MassUnit.imperialSystem[this.unit]!=="undefined"){n=MassUnit.imperialSystem}else if(t==="uscustomary"||typeof t==="undefined"&&typeof MassUnit.uscustomarySystem[this.unit]!=="undefined"){n=MassUnit.uscustomarySystem}else{return new MassUnit({unit:this.unit,amount:this.amount})}var i=this.amount;var o=this.amount;var e=MassUnit.ratios[this.unit];i=0x10000000000000000;for(var s in n){var a=this.amount*e[n[s]];if(a>=1&&a<i){i=a;o=s}}return new MassUnit({unit:o,amount:i})};MassUnit.getMeasures=function(){var t=[];for(var n in MassUnit.ratios){t.push(n)}return t};Measurement._constructors["mass"]=MassUnit;module.exports=MassUnit;