UNPKG

vivid-cli

Version:

Bring colors and styles to the command-line with ease.

84 lines (69 loc) 1.7 kB
var selectors = require('./selectors.js') var sKeys = [...Object.keys(selectors.effects), ...Object.keys(selectors.colors), ...Object.keys(selectors.bgs)] var _default = 'log' class Vivid{ constructor(){ this.append = ''; } get default(){ return _default } toggleDefault(){ _default = _default == 'log' ? 'convert' : 'log' } get regs(){ return { open : /\{([\w]+? ?)\}/g, close : /\{ ?\/([\w]+? ?)\}/g } } convert(input){ var groups = ['effects','colors','bgs'] input = this.append + input; this.append = ''; return input.replace(this.regs.open, (str, p1)=>{ for(let group of groups){ if(selectors[group][p1]){ if(selectors[group][p1].on){ return selectors[group][p1].on } return selectors[group][p1] } } return str }) .replace(this.regs.close, (str, p1)=>{ switch(p1){ case 'c': return selectors.colors.default case 'bg': return selectors.bgs.bgDefault case 'all': return selectors.clear default: if(selectors.effects[p1] && selectors.effects[p1].off){ return selectors.effects[p1].off } } return str }) + selectors.clear } log(input){ console.log(this.convert(input)) return this; } } sKeys.forEach(key=>{ if(key != 'default' && key != 'bgDefault'){ Vivid.prototype[key] = function(input){ this.append += '{' + key + '}' if(input){ var action = this.default; return this[action](input) }else{ return this } } } }) module.exports = new Vivid()