UNPKG

jsboost

Version:

A tiny library that extends the capability of javascript

138 lines (119 loc) 5.01 kB
/** * Author: JCloudYu * Create: 2018/12/22 * * The ANSI-VT100 Terminal Color Codes **/ const DEFAULT_COLOR_SET = [ [ 0, 0, "reset"], [ 1, 22, "bold"], [ 2, 22, "dim"], [ 3, 23, "italic"], [ 4, 24, "underline"], [ 5, 25, "blink"], [ 7, 27, "inverse"], [ 8, 28, "hidden"], [ 9, 29, "strikethrough"], [30, 39, "black"], [31, 39, "red"], [32, 39, "green"], [33, 39, "yellow"], [34, 39, "blue"], [35, 39, "magenta"], [36, 39, "cyan"], [37, 39, "white"], [38, 39, "gray"], [90, 39, "darkGray"], [91, 39, "lightRed"], [92, 39, "lightGreen"], [93, 39, "lightYellow"], [94, 39, "lightBlue"], [95, 39, "lightMagenta"], [96, 39, "lightCyan"], [97, 39, "lightWhite"], [40, 49, "bgBlack"], [41, 49, "bgRed"], [42, 49, "bgGreen"], [43, 49, "bgYellow"], [44, 49, "bgBlue"], [45, 49, "bgMagenta"], [46, 49, "bgCyan"], [47, 49, "bgGray"], [100, 49, "bgDarkGray"], [101, 49, "bgLightRed"], [102, 49, "bgLightGreen"], [103, 49, "bgLightYellow"], [104, 49, "bgLightBlue"], [105, 49, "bgLightMagenta"], [106, 49, "bgLightCyan"], [107, 49, "bgWhite"] ]; export const PRESET = Object.create(null); for(const [begin, end, color_name] of DEFAULT_COLOR_SET) { const preset = {}; Object.defineProperties(preset, { begin:{value:`\u001b[${begin}m`, enumerable:true}, end:{value:`\u001b[${end}m`, enumerable:true} }); Object.defineProperty(PRESET, color_name, {value:preset, enumerable:true}); } const CONTROL_STACK = [{ begin:'\u001b[39m', end: '\u001b[39m'}]; const COLOR_CONTROL = Object.create(null); for( const idx in PRESET ) { const color = PRESET[idx]; Object.defineProperty(COLOR_CONTROL, idx, {get:()=>{ CONTROL_STACK.push(color); return color.begin; }, enumerable:true}); } Object.defineProperty(COLOR_CONTROL, 'clear', {get:()=>{ if ( CONTROL_STACK.length > 1 ) { CONTROL_STACK.pop(); } return CONTROL_STACK[CONTROL_STACK.length-1].begin; }, enumerable:true}); Object.defineProperty(COLOR_CONTROL, 'purge', {get:()=>{ CONTROL_STACK.splice(1); return CONTROL_STACK[0].begin; }, enumerable:true}); export {COLOR_CONTROL as CtrlCode}; const SIMPLE_RENDER = (color, output)=>{ return `${COLOR_CONTROL[color]}${output}${COLOR_CONTROL.clear}`; }; export class Color { static reset(output){ return SIMPLE_RENDER('reset', output); } static bold(output){ return SIMPLE_RENDER('bold', output); } static dim(output){ return SIMPLE_RENDER('dim', output); } static italic(output){ return SIMPLE_RENDER('italic', output); } static underline(output){ return SIMPLE_RENDER('underline', output); } static inverse(output){ return SIMPLE_RENDER('inverse', output); } static hidden(output){ return SIMPLE_RENDER('hidden', output); } static strikethrough(output){ return SIMPLE_RENDER('strikethrough', output); } static black(output){ return SIMPLE_RENDER('black', output); } static red(output){ return SIMPLE_RENDER('red', output); } static green(output){ return SIMPLE_RENDER('green', output); } static yellow(output){ return SIMPLE_RENDER('yellow', output); } static blue(output){ return SIMPLE_RENDER('blue', output); } static magenta(output){ return SIMPLE_RENDER('magenta', output); } static cyan(output){ return SIMPLE_RENDER('cyan', output); } static gray(output){ return SIMPLE_RENDER('gray', output); } static darkGray(output){ return SIMPLE_RENDER('darkGray', output); } static lightRed(output){ return SIMPLE_RENDER('lightRed', output); } static lightGreen(output){ return SIMPLE_RENDER('lightGreen', output); } static lightYellow(output){ return SIMPLE_RENDER('lightYellow', output); } static lightBlue(output){ return SIMPLE_RENDER('lightBlue', output); } static lightMagenta(output){ return SIMPLE_RENDER('lightMagenta', output); } static lightCyan(output){ return SIMPLE_RENDER('lightCyan', output); } static white(output){ return SIMPLE_RENDER('white', output); } static bgBlack(output){ return SIMPLE_RENDER('bgBlack', output); } static bgRed(output){ return SIMPLE_RENDER('bgRed', output); } static bgGreen(output){ return SIMPLE_RENDER('bgGreen', output); } static bgYellow(output){ return SIMPLE_RENDER('bgYellow', output); } static bgBlue(output){ return SIMPLE_RENDER('bgBlue', output); } static bgMagenta(output){ return SIMPLE_RENDER('bgMagenta', output); } static bgCyan(output){ return SIMPLE_RENDER('bgCyan', output); } static bgGray(output){ return SIMPLE_RENDER('bgGray', output); } static bgDarkGray(output){ return SIMPLE_RENDER('bgDarkGray', output); } static bgLightRed(output){ return SIMPLE_RENDER('bgLightRed', output); } static bgLightGreen(output){ return SIMPLE_RENDER('bgLightGreen', output); } static bgLightYellow(output){ return SIMPLE_RENDER('bgLightYellow', output); } static bgLightBlue(output){ return SIMPLE_RENDER('bgLightBlue', output); } static bgLightMagenta(output){ return SIMPLE_RENDER('bgLightMagenta', output); } static bgLightCyan(output){ return SIMPLE_RENDER('bgLightCyan', output); } static bgWhite(output){ return SIMPLE_RENDER('bgWhite', output); } }