You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.3 KiB
125 lines
2.3 KiB
'use strict' |
|
|
|
// These tables borrowed from `ansi` |
|
|
|
var prefix = '\x1b[' |
|
|
|
exports.up = function up (num) { |
|
return prefix + (num || '') + 'A' |
|
} |
|
|
|
exports.down = function down (num) { |
|
return prefix + (num || '') + 'B' |
|
} |
|
|
|
exports.forward = function forward (num) { |
|
return prefix + (num || '') + 'C' |
|
} |
|
|
|
exports.back = function back (num) { |
|
return prefix + (num || '') + 'D' |
|
} |
|
|
|
exports.nextLine = function nextLine (num) { |
|
return prefix + (num || '') + 'E' |
|
} |
|
|
|
exports.previousLine = function previousLine (num) { |
|
return prefix + (num || '') + 'F' |
|
} |
|
|
|
exports.horizontalAbsolute = function horizontalAbsolute (num) { |
|
if (num == null) throw new Error('horizontalAboslute requires a column to position to') |
|
return prefix + num + 'G' |
|
} |
|
|
|
exports.eraseData = function eraseData () { |
|
return prefix + 'J' |
|
} |
|
|
|
exports.eraseLine = function eraseLine () { |
|
return prefix + 'K' |
|
} |
|
|
|
exports.goto = function (x, y) { |
|
return prefix + y + ';' + x + 'H' |
|
} |
|
|
|
exports.gotoSOL = function () { |
|
return '\r' |
|
} |
|
|
|
exports.beep = function () { |
|
return '\x07' |
|
} |
|
|
|
exports.hideCursor = function hideCursor () { |
|
return prefix + '?25l' |
|
} |
|
|
|
exports.showCursor = function showCursor () { |
|
return prefix + '?25h' |
|
} |
|
|
|
var colors = { |
|
reset: 0, |
|
// styles |
|
bold: 1, |
|
italic: 3, |
|
underline: 4, |
|
inverse: 7, |
|
// resets |
|
stopBold: 22, |
|
stopItalic: 23, |
|
stopUnderline: 24, |
|
stopInverse: 27, |
|
// colors |
|
white: 37, |
|
black: 30, |
|
blue: 34, |
|
cyan: 36, |
|
green: 32, |
|
magenta: 35, |
|
red: 31, |
|
yellow: 33, |
|
bgWhite: 47, |
|
bgBlack: 40, |
|
bgBlue: 44, |
|
bgCyan: 46, |
|
bgGreen: 42, |
|
bgMagenta: 45, |
|
bgRed: 41, |
|
bgYellow: 43, |
|
|
|
grey: 90, |
|
brightBlack: 90, |
|
brightRed: 91, |
|
brightGreen: 92, |
|
brightYellow: 93, |
|
brightBlue: 94, |
|
brightMagenta: 95, |
|
brightCyan: 96, |
|
brightWhite: 97, |
|
|
|
bgGrey: 100, |
|
bgBrightBlack: 100, |
|
bgBrightRed: 101, |
|
bgBrightGreen: 102, |
|
bgBrightYellow: 103, |
|
bgBrightBlue: 104, |
|
bgBrightMagenta: 105, |
|
bgBrightCyan: 106, |
|
bgBrightWhite: 107 |
|
} |
|
|
|
exports.color = function color (colorWith) { |
|
if (arguments.length !== 1 || !Array.isArray(colorWith)) { |
|
colorWith = Array.prototype.slice.call(arguments) |
|
} |
|
return prefix + colorWith.map(colorNameToCode).join(';') + 'm' |
|
} |
|
|
|
function colorNameToCode (color) { |
|
if (colors[color] != null) return colors[color] |
|
throw new Error('Unknown color or style name: ' + color) |
|
}
|
|
|