ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 5.11 kB
JavaScript
var Measurement=require("./Measurement.js");var AreaUnit=function(e){this.unit="square meter";this.amount=0;this.aliases=AreaUnit.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()==="area"){this.amount=AreaUnit.convert(this.unit,e.amount.getUnit(),e.amount.getAmount())}else{throw"Cannot convert unit "+e.amount.unit+" to area"}}else if(typeof e.amount!=="undefined"){this.amount=parseFloat(e.amount)}}if(typeof AreaUnit.ratios[this.unit]==="undefined"){throw"Unknown unit: "+e.unit}};AreaUnit.prototype=new Measurement;AreaUnit.prototype.parent=Measurement;AreaUnit.prototype.constructor=AreaUnit;AreaUnit.ratios={"square centimeter":[1,1,1e-4,1e-8,1e-10,.15500031,.00107639104,.000119599005,2.47105381e-8,3.86102159e-11],"square meter":[2,1e4,1,1e-4,1e-6,1550,10.7639,1.19599,247105e-9,3.861e-7],hectare:[3,1e8,1e4,1,.01,155e5,107639,11959.9,2.47105,.00386102],"square km":[4,1e10,1e6,100,1,155e7,1076e4,1196e3,247.105,.386102],"square inch":[5,6.4516,64516e-8,6.4516e-8,6.4516e-10,1,771605e-9,.0007716051,1.5942e-7,2.491e-10],"square foot":[6,929.0304,.092903,92903e-10,9.2903e-8,144,1,.111111,22957e-9,3.587e-8],"square yard":[7,8361.2736,.836127,83613e-9,8.3613e-7,1296,9,1,206612e-9,3.2283e-7],acre:[8,40468564.2,4046.86,.404686,.00404686,6273e3,43560,4840,1,.0015625],"square mile":[9,25899881100,259e4,258.999,2.58999,4014e6,2788e4,3098e3,640,1]};AreaUnit.prototype.getMeasure=function(){return"area"};AreaUnit.prototype.convert=function(e){if(!e||typeof AreaUnit.ratios[this.normalizeUnits(e)]==="undefined"){return undefined}return new AreaUnit({unit:e,amount:this})};AreaUnit.aliases={"square centimeter":"square centimeter","square cm":"square centimeter","sq cm":"square centimeter","Square Cm":"square centimeter","square Centimeters":"square centimeter","square Centimeter":"square centimeter","square Centimetre":"square centimeter","square Centimetres":"square centimeter","square centimeters":"square centimeter","Square km":"square km","Square kilometre":"square km","square kilometer":"square km","square kilometre":"square km","square kilometers":"square km","square kilometres":"square km","square km":"square km","sq km":"square km",km2:"square km",Hectare:"hectare",hectare:"hectare",ha:"hectare","Square meter":"square meter","Square meters":"square meter","square meter":"square meter","square meters":"square meter","Square metre":"square meter","Square metres":"square meter","square metres":"square meter","Square Metres":"square meter",sqm:"square meter",m2:"square meter","Square mile":"square mile","Square miles":"square mile","square mile":"square mile","square miles":"square mile","square mi":"square mile","Square mi":"square mile","sq mi":"square mile",mi2:"square mile",Acre:"acre",acre:"acre",Acres:"acre",acres:"acre","Square yard":"square yard","Square yards":"square yard","square yard":"square yard","square yards":"square yard",yd2:"square yard","Square foot":"square foot","square foot":"square foot","Square feet":"square foot","Square Feet":"square foot","sq ft":"square foot",ft2:"square foot","Square inch":"square inch","square inch":"square inch","Square inches":"square inch","square inches":"square inch",in2:"square inch"};AreaUnit.convert=function(e,r,t){r=AreaUnit.aliases[r]||r;e=AreaUnit.aliases[e]||e;var a=AreaUnit.ratios[r];var i=AreaUnit.ratios[e];if(typeof r==="undefined"||typeof e==="undefined"){return undefined}return t*a[i[0]]};AreaUnit.getMeasures=function(){var e=[];for(var r in AreaUnit.ratios){e.push(r)}return e};AreaUnit.metricSystem={"square centimeter":1,"square meter":2,hectare:3,"square km":4};AreaUnit.imperialSystem={"square inch":5,"square foot":6,"square yard":7,acre:8,"square mile":9};AreaUnit.uscustomarySystem={"square inch":5,"square foot":6,"square yard":7,acre:8,"square mile":9};AreaUnit.metricToUScustomary={"square centimeter":"square inch","square meter":"square yard",hectare:"acre","square km":"square mile"};AreaUnit.usCustomaryToMetric={"square inch":"square centimeter","square foot":"square meter","square yard":"square meter",acre:"hectare","square mile":"square km"};AreaUnit.prototype.scale=function(e){var r=AreaUnit.ratios[this.unit];var t;if(e==="metric"||typeof e==="undefined"&&typeof AreaUnit.metricSystem[this.unit]!=="undefined"){t=AreaUnit.metricSystem}else if(e==="uscustomary"||typeof e==="undefined"&&typeof AreaUnit.uscustomarySystem[this.unit]!=="undefined"){t=AreaUnit.uscustomarySystem}else if(e==="imperial"||typeof e==="undefined"&&typeof AreaUnit.imperialSystem[this.unit]!=="undefined"){t=AreaUnit.imperialSystem}var a=this.amount;var i=this.unit;a=0x10000000000000000;for(var u in t){var s=this.amount*r[t[u]];if(s>=1&&s<a){a=s;i=u}}return new AreaUnit({unit:i,amount:a})};AreaUnit.prototype.localize=function(e){var r;if(e==="en-US"||e==="en-GB"){r=AreaUnit.metricToUScustomary[this.unit]||this.unit}else{r=AreaUnit.usCustomaryToMetric[this.unit]||this.unit}return new AreaUnit({unit:r,amount:this})};Measurement._constructors["area"]=AreaUnit;module.exports=AreaUnit;