arrakis
Version:
Helpfull development framework
81 lines (63 loc) • 1.69 kB
JavaScript
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;