UNPKG

ilib

Version:

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

1 lines 8.65 kB
var Measurement=require("./Measurement.js");var VolumeUnit=function(i){this.unit="cubic meter";this.amount=0;this.aliases=VolumeUnit.aliases;if(i){if(typeof i.unit!=="undefined"){this.originalUnit=i.unit;this.unit=this.aliases[i.unit]||i.unit}if(typeof i.amount==="object"){if(i.amount.getMeasure()==="volume"){this.amount=VolumeUnit.convert(this.unit,i.amount.getUnit(),i.amount.getAmount())}else{throw"Cannot convert unit "+i.amount.unit+" to a volume"}}else if(typeof i.amount!=="undefined"){this.amount=parseFloat(i.amount)}}if(typeof VolumeUnit.ratios[this.unit]==="undefined"){throw"Unknown unit: "+i.unit}};VolumeUnit.prototype=new Measurement;VolumeUnit.prototype.parent=Measurement;VolumeUnit.prototype.constructor=VolumeUnit;VolumeUnit.ratios={tsp:[1,1,.333333,.300781,.166667,.0208333,.0104167,.00520833,.00130208,174063e-9,4.92892,.00492892,49289e-10,.832674,.277558,.173474,.00867369,.00433684,.00108421],tbsp:[2,3,1,.902344,.5,.0625,.0312,.015625,.00390625,52219e-8,14.7868,.0147868,14787e-9,2.49802,.832674,.520421,.0260211,.0130105,.00325263],"cubic inch":[3,3.32468,1.10823,1,.554113,.0692641,.034632,.017316,.004329,578704e-9,16.3871,.0163871,16387e-9,2.76837,.92279,.576744,.0288372,.0144186,.00360465],"us ounce":[4,6,2,1.80469,1,.125,.0625,.0078125,.0078125,.00104438,29.5735,.0295735,29574e-9,4.99604,1.04084,1.04084,.0520421,.0260211,.00650526],cup:[5,48,16,14.4375,8,1,.5,.25,.0625,.00835503,236.588,.236588,236588e-9,39.9683,13.3228,8.32674,.416337,.208168,.0520421],pint:[6,96,32,28.875,16,2,1,.5,.125,.0167101,473.176,.473176,473176e-9,79.9367,26.6456,16.6535,.832674,.416337,.104084],quart:[7,192,64,57.75,32,4,2,1,.25,.0334201,946.353,.946353,946353e-9,159.873,53.2911,33.307,1.66535,.832674,.208168],gallon:[8,768,256,231,128,16,8,4,1,.133681,3785.41,3.78541,.00378541,639.494,213.165,133.228,6.66139,3.3307,.832674],"cubic foot":[9,5745.04,1915.01,1728,957.506,119.688,59.8442,29.9221,7.48052,1,28316.8,28.3168,.0283168,4783.74,1594.58,996.613,49.8307,24.9153,6.22883],milliliter:[10,.202884,.067628,.0610237,.033814,.00422675,.00211338,.00105669,264172e-9,35315e-9,1,.001,1e-6,.168936,.0563121,.0351951,.00175975,879877e-9,219969e-9],liter:[11,202.884,67.628,61.0237,33.814,4.22675,2.11338,1.05669,.264172,.0353147,1e3,1,.001,56.3121,56.3121,35.191,1.75975,.879877,.219969],"cubic meter":[12,202884,67628,61023.7,33814,4226.75,2113.38,1056.69,264.172,35.3147,1e6,1e3,1,168936,56312.1,35195.1,1759.75,879.877,219.969],"imperial tsp":[13,1.20095,.200158,.361223,.600475,.0250198,.0125099,.00625495,.00156374,209041e-9,5.91939,.00591939,59194e-10,1,.333333,.208333,.0104167,.00520833,.00130208],"imperial tbsp":[14,3.60285,1.20095,1.08367,.600475,.0750594,.0375297,.0187649,.00469121,627124e-9,17.7582,.0177582,17758e-9,3,1,.625,.03125,.015625,.00390625],"imperial ounce":[15,5.76456,1.92152,1.73387,.96076,.120095,.0600475,.0300238,.00750594,.0010034,28.4131,.0284131,28413e-9,4.8,1.6,1,.05,.025,.00625],"imperial pint":[16,115.291,38.4304,34.6774,19.2152,2.4019,1.20095,.600475,.150119,.020068,568.261,.568261,568261e-9,96,32,20,1,.5,.125],"imperial quart":[17,230.582,76.8608,69.3549,38.4304,4.8038,2.4019,1.20095,.300238,.0401359,1136.52,1.13652,.00113652,192,64,40,2,1,.25],"imperial gallon":[18,922.33,307.443,277.42,153.722,19.2152,9.6076,4.8038,1.20095,.160544,4546.09,4.54609,.00454609,768,256,160,8,4,1]};VolumeUnit.prototype.getMeasure=function(){return"volume"};VolumeUnit.prototype.convert=function(i){if(!i||typeof VolumeUnit.ratios[this.normalizeUnits(i)]==="undefined"){return undefined}return new VolumeUnit({unit:i,amount:this})};VolumeUnit.aliases={"US gal":"gallon","US gallon":"gallon","US Gal":"gallon","US Gallons":"gallon","Gal(US)":"gallon","gal(US)":"gallon",gallon:"gallon",quart:"quart","US quart":"quart","US quarts":"quart","US Quart":"quart","US Quarts":"quart","US qt":"quart","Qt(US)":"quart","qt(US)":"quart","US pint":"pint","US Pint":"pint",pint:"pint","pint(US)":"pint","Pint(US)":"pint","US cup":"cup","US Cup":"cup","cup(US)":"cup","Cup(US)":"cup",cup:"cup","us ounce":"us ounce","US ounce":"us ounce","℥":"us ounce","US Oz":"us ounce","oz(US)":"us ounce","Oz(US)":"us ounce","US tbsp":"tbsp",tbsp:"tbsp","tbsp(US)":"tbsp","US tablespoon":"tbsp","US tsp":"tsp","tsp(US)":"tsp",tsp:"tsp","Cubic meter":"cubic meter","cubic meter":"cubic meter","Cubic metre":"cubic meter","cubic metre":"cubic meter",m3:"cubic meter",Liter:"liter",Liters:"liter",liter:"liter",L:"liter",l:"liter",Milliliter:"milliliter",ML:"milliliter",ml:"milliliter",milliliter:"milliliter",mL:"milliliter","Imperial gal":"imperial gallon","imperial gallon":"imperial gallon","Imperial gallon":"imperial gallon","gallon(imperial)":"imperial gallon","gal(imperial)":"imperial gallon","Imperial quart":"imperial quart","imperial quart":"imperial quart","Imperial Quart":"imperial quart","IMperial qt":"imperial quart","qt(Imperial)":"imperial quart","quart(imperial)":"imperial quart","Imperial pint":"imperial pint","imperial pint":"imperial pint","pint(Imperial)":"imperial pint","imperial oz":"imperial ounce","imperial ounce":"imperial ounce","Imperial Ounce":"imperial ounce","Imperial tbsp":"imperial tbsp","imperial tbsp":"imperial tbsp","tbsp(Imperial)":"imperial tbsp","Imperial tsp":"imperial tsp","imperial tsp":"imperial tsp","tsp(Imperial)":"imperial tsp","Cubic foot":"cubic foot","cubic foot":"cubic foot","Cubic Foot":"cubic foot","Cubic feet":"cubic foot","cubic Feet":"cubic foot","cubic ft":"cubic foot",ft3:"cubic foot","Cubic inch":"cubic inch","Cubic inches":"cubic inch","cubic inches":"cubic inch","cubic inch":"cubic inch","cubic in":"cubic inch","cu in":"cubic inch","cu inch":"cubic inch","inch³":"cubic inch","in³":"cubic inch","inch^3":"cubic inch","in^3":"cubic inch","c.i":"cubic inch",CI:"cubic inch",cui:"cubic inch"};VolumeUnit.convert=function(i,t,e){t=VolumeUnit.aliases[t]||t;i=VolumeUnit.aliases[i]||i;var l=VolumeUnit.ratios[t];var u=VolumeUnit.ratios[i];if(typeof t==="undefined"||typeof i==="undefined"){return undefined}var n=e*l[u[0]];return n};VolumeUnit.getMeasures=function(){var i=[];for(var t in VolumeUnit.ratios){i.push(t)}return i};VolumeUnit.metricSystem={milliliter:10,liter:11,"cubic meter":12};VolumeUnit.imperialSystem={"imperial tsp":13,"imperial tbsp":14,"imperial ounce":15,"imperial pint":16,"imperial quart":17,"imperial gallon":18};VolumeUnit.uscustomarySystem={tsp:1,tbsp:2,"cubic inch":3,"us ounce":4,cup:5,pint:6,quart:7,gallon:8,"cubic foot":9};VolumeUnit.metricToUScustomary={milliliter:"tsp",liter:"quart","cubic meter":"cubic foot"};VolumeUnit.metricToImperial={milliliter:"imperial tsp",liter:"imperial quart","cubic meter":"imperial gallon"};VolumeUnit.imperialToMetric={"imperial tsp":"milliliter","imperial tbsp":"milliliter","imperial ounce":"milliliter","imperial pint":"liter","imperial quart":"liter","imperial gallon":"cubic meter"};VolumeUnit.imperialToUScustomary={"imperial tsp":"tsp","imperial tbsp":"tbsp","imperial ounce":"us ounce","imperial pint":"pint","imperial quart":"quart","imperial gallon":"gallon"};VolumeUnit.uScustomaryToImperial={tsp:"imperial tsp",tbsp:"imperial tbsp","cubic inch":"imperial tbsp","us ounce":"imperial ounce",cup:"imperial ounce",pint:"imperial pint",quart:"imperial quart",gallon:"imperial gallon","cubic foot":"imperial gallon"};VolumeUnit.uScustomarylToMetric={tsp:"milliliter",tbsp:"milliliter","cubic inch":"milliliter","us ounce":"milliliter",cup:"milliliter",pint:"liter",quart:"liter",gallon:"cubic meter","cubic foot":"cubic meter"};VolumeUnit.prototype.localize=function(i){var t;if(i==="en-US"){t=VolumeUnit.metricToUScustomary[this.unit]||VolumeUnit.imperialToUScustomary[this.unit]||this.unit}else if(i==="en-GB"){t=VolumeUnit.metricToImperial[this.unit]||VolumeUnit.uScustomaryToImperial[this.unit]||this.unit}else{t=VolumeUnit.uScustomarylToMetric[this.unit]||VolumeUnit.imperialToUScustomary[this.unit]||this.unit}return new VolumeUnit({unit:t,amount:this})};VolumeUnit.prototype.scale=function(i){var t=VolumeUnit.ratios[this.unit];var e;if(i==="metric"||typeof i==="undefined"&&typeof VolumeUnit.metricSystem[this.unit]!=="undefined"){e=VolumeUnit.metricSystem}else if(i==="uscustomary"||typeof i==="undefined"&&typeof VolumeUnit.uscustomarySystem[this.unit]!=="undefined"){e=VolumeUnit.uscustomarySystem}else if(i==="imperial"||typeof i==="undefined"&&typeof VolumeUnit.imperialSystem[this.unit]!=="undefined"){e=VolumeUnit.imperialSystem}var l=this.amount;var u=this.unit;l=0x10000000000000000;for(var n in e){var r=this.amount*t[e[n]];if(r>=1&&r<l){l=r;u=n}}return new VolumeUnit({unit:u,amount:l})};Measurement._constructors["volume"]=VolumeUnit;module.exports=VolumeUnit;