44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
"use strict";
|
|
|
|
var d = require("d")
|
|
, trunc = require("es5-ext/math/trunc");
|
|
|
|
var 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 ? "B" : "A";
|
|
n = floor(abs(n));
|
|
return "\x1b[" + n + dir + "\x1b[1G";
|
|
}),
|
|
top: d("\x1b[5000F"),
|
|
bottom: d("\x1b[5000B"),
|
|
lineBegin: d("\x1b[5000D"),
|
|
lineEnd: d("\x1b[5000C")
|
|
}
|
|
);
|