UNPKG

arrakis

Version:

Helpfull development framework

81 lines (63 loc) 1.69 kB
module.exports = class Console{ constructor(execPool){ this.execPool = execPool; this.test = function(text){ if(!text) console.log('test [msg]'); else console.log(text); } } encodeCMD(cmd){ return cmd.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, function(x){ return x.replace(/\s/g, '▓'); }); } decodeCMD(cmd){ return cmd.replace(/\▓/g, ' ').replace(/\"/g, ""); }; getArgs(cmd){ cmd = this.encodeCMD(cmd); cmd = cmd.split(' '); var argv = []; var bufferArgv; for(var index = 0; index < cmd.length; index++){ bufferArgv = this.decodeCMD(cmd[index]); if(Number(bufferArgv)) bufferArgv = Number(bufferArgv); argv[index] = bufferArgv; } return argv; } exec(cmd){ if(!cmd) return false; var argv = this.getArgs(cmd); this.getCommand({ parent: this.execPool, args: argv, notFound: function(command){ console.log(command+': command not found'); }, success: function(command, args){ command.apply(this, args); } }); } getCommand(options){ for(var name in options.parent){ if(name == options.args[0] && typeof options.parent[name] !== 'undefined'){ options.parent = options.parent[name]; options.commandChecked = options.args.shift(); if(options.args.length > 0) { return this.getCommand(options); } } } if(typeof options.parent === 'function' && options.success != null) options.success.apply(this, [options.parent, options.args]); else if(options.notFound != null) options.notFound.apply(this, [options.commandChecked]); } } var index = 0;