vivid-cli
Version:
Bring colors and styles to the command-line with ease.
84 lines (69 loc) • 1.7 kB
JavaScript
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()