UNPKG

fly-js

Version:

A JavaScript utility library focusing on aviation

140 lines (127 loc) 3.02 kB
/*jslint node: true */ "use strict"; var _ = require('lodash'); var Beaufort = function () { this.scale = [ { "force": 0, "description": "Calm", "windspeed": { "lower": 0, "upper": 0 } }, { "force": 1, "description": "Light Air", "windspeed": { "lower": 1, "upper": 3 } }, { "force": 2, "description": "Light Breeze", "windspeed": { "lower": 4, "upper": 6 } }, { "force": 3, "description": "Gentle Breeze", "windspeed": { "lower": 7, "upper": 10 } }, { "force": 4, "description": "Moderate Breeze", "windspeed": { "lower": 11, "upper": 16 } }, { "force": 5, "description": "Fresh Breeze", "windspeed": { "lower": 17, "upper": 21 } }, { "force": 6, "description": "Strong Breeze", "windspeed": { "lower": 22, "upper": 27 } }, { "force": 7, "description": "Near Gale", "windspeed": { "lower": 28, "upper": 33 } }, { "force": 8, "description": "Fresh Gale", "windspeed": { "lower": 34, "upper": 40 } }, { "force": 9, "description": "Strong Gale", "windspeed": { "lower": 41, "upper": 47 } }, { "force": 10, "description": "Storm", "windspeed": { "lower": 48, "upper": 55 } }, { "force": 11, "description": "Violent Storm", "windspeed": { "lower": 56, "upper": 63 } }, { "force": 12, "description": "Hurricane", "windspeed": { "lower": 64, "upper": Infinity } } ]; }; Beaufort.prototype.between = function (item, windKnotes) { return windKnotes >= item.windspeed.lower && windKnotes <= item.windspeed.upper; }; Beaufort.prototype.lookup = function (windKnotes, key) { var match = null; if (!key) { key = "description"; } _.forOwn(this.scale, function (item) { if (this.between(item, windKnotes)) { match = item[key] || item; } }, this); return match; }; module.exports = new Beaufort();