[Snippet] Command Parser - Printable Version
-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Thread: [Snippet] Command Parser (/showthread.php?tid=64877)
[Snippet] Command Parser by Shondoit on 08-13-2006 at 06:51 PM
Thought I'd help, for the newest people under us, or maybe even the more experienced ones....
code: function CommandParser (Message) {
//If Message is not undefined, pass it to 'Parse'
if (Message) this.Parse(Message);
this.Parse = function (Message) {
//A RegExp to check if it is a command... with params if possible
//PM me if you need any help with this step
this.IsCommand = /^\/([^\s]+)(?:\s+(.+))?/i.test(Message)
if (this.IsCommand) {
//If it is a command, the commandname and params are stored
this.Command = RegExp.$1
this.Param = (RegExp.$2 === "") ? undefined : RegExp.$2
} else {
//Else, they are set to undefined
this.Command = undefined
this.Param = undefined
}
}
//Check if the command parsed is a given command (compare)
this.CommandIs = function (Command) {
if (this.IsCommand) {
return (this.Command.toLowerCase() == Command.toLowerCase())
}
}
//Return the parameters if any, split when necesary, or else return undefined
//RegExp's can be used as Delimiter, to check if the're multiple spaces
//Like in my example
this.Params = function(Delimiter){
if (this.IsCommand) {
return (this.Param == undefined) ? undefined : (Delimiter) ? this.Param.split(Delimiter) : this.Param
}
}
}
Here's an example...
code: function OnEvent_ChatWndSendMessage (ChatWnd, Message) {
var Parser = new CommandParser(Message)
//Could also be written as:
//var Parser = new CommandParser()
//Parser.Parse(Message)
//Or you could set Parser as a global var...
if (Parser.CommandIs("ShowLog")) {
var Emails = Parser.Params(/\s+/)
if (Emails) {
for (Offset in Emails) {
//Call a custom function
ShowLog(Emails[Offset])
}
Message = ""
}
}
return Message
}
|