UNPKG

752 BJavaScriptView Raw
1'use strict';
2var isFinite = require('is-finite');
3
4module.exports = function (numbers, opts) {
5 if (!Array.isArray(numbers)) {
6 throw new TypeError('Expected an array');
7 }
8
9 opts = opts || {};
10
11 var ticks = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
12 var finiteNumbers = numbers.filter(isFinite);
13 var min = opts.min || Math.min.apply(null, finiteNumbers);
14 var max = opts.max || Math.max.apply(null, finiteNumbers);
15
16 // use a high tick if data is constant
17 if (min === max) {
18 ticks = [ticks[4]];
19 }
20
21 return numbers.map(function (el) {
22 if (!isFinite(el)) {
23 return ' ';
24 }
25
26 var tickIndex = Math.ceil((el / max) * ticks.length) - 1;
27
28 if (tickIndex < 0) {
29 tickIndex = 0;
30 }
31
32 return ticks[tickIndex];
33 }).join('');
34};