/** * Handles commands received via chat messages. */ var CommandsProcessor = (function() { /** * Constructs new CommandProccessor instance from a message. * @param message the message * @constructor */ function CommandsPrototype(message) { /** * Extracts the command from the message. * @param message the received message * @returns {string} the command */ function getCommand(message) { if(message) { for(var command in commands) { if(message.indexOf("/" + command) == 0) return command; } } return ""; }; var command = getCommand(message); /** * Returns the name of the command. * @returns {String} the command */ this.getCommand = function() { return command; } var messageArgument = message.substr(command.length + 2); /** * Returns the arguments of the command. * @returns {string} */ this.getArgument = function() { return messageArgument; } } /** * Checks whether this instance is valid command or not. * @returns {boolean} */ CommandsPrototype.prototype.isCommand = function() { if(this.getCommand()) return true; return false; } /** * Processes the command. */ CommandsPrototype.prototype.processCommand = function() { if(!this.isCommand()) return; commands[this.getCommand()](this.getArgument()); } /** * Processes the data for topic command. * @param commandArguments the arguments of the topic command. */ var processTopic = function(commandArguments) { var topic = Util.escapeHtml(commandArguments); connection.emuc.setSubject(topic); } /** * List with supported commands. The keys are the names of the commands and * the value is the function that processes the message. * @type {{String: function}} */ var commands = { "topic" : processTopic }; return CommandsPrototype; })();