canopy/www/js/channel/commandPreprocessor.js

62 lines
1.8 KiB
JavaScript

class commandPreprocessor{
constructor(client){
this.client = client;
this.commandProcessor = new commandProcessor(client);
}
preprocess(command){
//Set command and sendFlag
this.command = command;
this.sendFlag = true;
this.splitBody();
this.processLocalCommand();
this.sendRemoteCommand();
}
splitBody(){
//Create an empty array to hold the command
this.commandArray = [];
//Split string by words
this.commandArray = this.command.split(/\b/g);//Split by word-borders
this.argumentArray = this.command.match(/\b\w+\b/g);//Match by words surrounded by borders
}
processLocalCommand(){
//If this is a local command
if(this.commandArray[0] == '/'){
//If the command exists
if(this.argumentArray != null && this.commandProcessor[this.argumentArray[0]] != null){
//Don't send it to the server
this.sendFlag = false;
//Call the command with the argument array
this.commandProcessor[this.argumentArray[0]](this.argumentArray, this.commandArray);
}
}
}
sendRemoteCommand(){
if(this.sendFlag){
this.client.socket.emit("chatMessage",{msg: this.commandArray.join("")});
}
}
}
class commandProcessor{
constructor(client){
this.client = client
}
high(argumentArray){
//If we have an argument
if(argumentArray[1]){
//Use it to set our high level
//Technically this is less of a local command than it would be if it where telling the select to do this
//but TTN used to treat this as a local command so fuck it
this.client.socket.emit("setHighLevel", {highLevel: argumentArray[1]});
}
}
}