UNPKG

kibana-123

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

67 lines (54 loc) 1.29 kB
import _ from 'lodash'; /** * Regexp portion that matches our number * * supports: * -100 * -100.0 * 0 * 0.10 * Infinity * -Infinity * * @type {String} */ let _RE_NUMBER = '(\\-?(?:\\d+(?:\\.\\d+)?|Infinity))'; /** * Regexp for the interval notation * * supports: * [num, num] * ( num , num ] * [Infinity,num) * * @type {RegExp} */ let RANGE_RE = new RegExp('^\\s*([\\[|\\(])\\s*' + _RE_NUMBER + '\\s*,\\s*' + _RE_NUMBER + '\\s*([\\]|\\)])\\s*$'); function parse(input) { let match = String(input).match(RANGE_RE); if (!match) { throw new TypeError('expected input to be in interval notation eg. (100, 200]'); } return new Range( match[1] === '[', parseFloat(match[2]), parseFloat(match[3]), match[4] === ']' ); } function Range(/* minIncl, min, max, maxIncl */) { let args = _.toArray(arguments); if (args[1] > args[2]) args.reverse(); this.minInclusive = args[0]; this.min = args[1]; this.max = args[2]; this.maxInclusive = args[3]; } Range.prototype.within = function (n) { if (this.min === n && !this.minInclusive) return false; if (this.min > n) return false; if (this.max === n && !this.maxInclusive) return false; if (this.max < n) return false; return true; }; export default parse;