| '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) |
| } |