1 | 'use strict';
|
2 | var isFinite = require('is-finite');
|
3 |
|
4 | module.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 |
|
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 | };
|