Musique/node_modules/cli-color/move.js

36 lines
945 B
JavaScript

'use strict';
var d = require('d')
, trunc = require('es5-ext/math/trunc')
, up, down, right, left
, abs = Math.abs, floor = Math.floor, max = Math.max;
var getMove = function (control) {
return function (num) {
num = isNaN(num) ? 0 : max(floor(num), 0);
return num ? ('\x1b[' + num + control) : '';
};
};
module.exports = Object.defineProperties(function (x, y) {
x = isNaN(x) ? 0 : floor(x);
y = isNaN(y) ? 0 : floor(y);
return ((x > 0) ? right(x) : left(-x)) + ((y > 0) ? down(y) : up(-y));
}, {
up: d(up = getMove('A')),
down: d(down = getMove('B')),
right: d(right = getMove('C')),
left: d(left = getMove('D')),
to: d(function (x, y) {
x = isNaN(x) ? 1 : (max(floor(x), 0) + 1);
y = isNaN(y) ? 1 : (max(floor(y), 0) + 1);
return '\x1b[' + y + ';' + x + 'H';
}),
lines: d(function (n) {
var dir;
n = trunc(n) || 0;
dir = (n >= 0) ? 'E' : 'F';
n = floor(abs(n));
return '\x1b[' + n + dir;
})
});