]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Refactor commands.
authorChris Porter <redacted>
Sat, 6 Dec 2008 21:34:49 +0000 (21:34 +0000)
committerChris Porter <redacted>
Sat, 6 Dec 2008 21:34:49 +0000 (21:34 +0000)
compile.bat
compile.sh
js/irc/commandparser.js
js/irc/commands.js [new file with mode: 0644]
js/irc/ircclient.js
pagegen.py

index 1f1950858004142feeada2903d5154642de4b10e..dd12fa9f9e3b1ea2507adc323d2238ec5643981f 100644 (file)
@@ -5,7 +5,7 @@ mkdir compiled
 del /q compiled\*.js\r
 \r
 cd js\r
-copy qwebirc.js + version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\numerics.js + irc\baseircclient.js + irc\irctracker.js + irc\commandparser.js + irc\ircclient.js + ui\baseui.js + ui\baseuiwindow.js + ui\colour.js + ui\url.js + ui\theme.js + ui\panes\connect.js + ui\panes\embed.js + qwebircinterface.js + irc\commandhistory.js + ui\hilightcontroller.js + ui\menuitems.js + ui\tabcompleter.js + ui\panes\options.js + ui\panes\about.js + auth.js + sound.js + ui\panes\privacypolicy.js ..\compiled\qwebirc-concat.js /b\r
+copy qwebirc.js + version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\numerics.js + irc\baseircclient.js + irc\irctracker.js + irc\commandparser.js + irc\commands.js + irc\ircclient.js + ui\baseui.js + ui\baseuiwindow.js + ui\colour.js + ui\url.js + ui\theme.js + ui\panes\connect.js + ui\panes\embed.js + qwebircinterface.js + irc\commandhistory.js + ui\hilightcontroller.js + ui\menuitems.js + ui\tabcompleter.js + ui\panes\options.js + ui\panes\about.js + auth.js + sound.js + ui\panes\privacypolicy.js ..\compiled\qwebirc-concat.js /b\r
 copy ui\frontends\swmui.js + ui\frontends\swmlayout.js ..\compiled\swmui-concat.js /b\r
 cd ..\compiled\r
 \r
index dd1993d02d86e2a05e6665ebaa4bdc8c54bab9db..fbf083b95cff0cb7cba23f7ac3321a823ec1f918 100755 (executable)
@@ -5,7 +5,7 @@ mkdir -p compiled
 rm -f compiled/*.js
 
 cd js
-cat qwebirc.js version.js jslib.js irc/ircconnection.js irc/irclib.js irc/numerics.js irc/baseircclient.js irc/irctracker.js irc/commandparser.js irc/ircclient.js ui/baseui.js ui/baseuiwindow.js ui/colour.js ui/url.js ui/theme.js ui/panes/connect.js ui/panes/embed.js irc/commandhistory.js ui/hilightcontroller.js ui/menuitems.js ui/tabcompleter.js ui/panes/options.js ui/panes/about.js qwebircinterface.js auth.js sound.js ui/panes/privacypolicy.js > ../compiled/qwebirc-concat.js
+cat qwebirc.js version.js jslib.js irc/ircconnection.js irc/irclib.js irc/numerics.js irc/baseircclient.js irc/irctracker.js irc/commandparser.js irc/commands.js irc/ircclient.js ui/baseui.js ui/baseuiwindow.js ui/colour.js ui/url.js ui/theme.js ui/panes/connect.js ui/panes/embed.js irc/commandhistory.js ui/hilightcontroller.js ui/menuitems.js ui/tabcompleter.js ui/panes/options.js ui/panes/about.js qwebircinterface.js auth.js sound.js ui/panes/privacypolicy.js > ../compiled/qwebirc-concat.js
 cat ui/frontends/swmui.js ui/frontends/swmlayout.js > ../compiled/swmui-concat.js
 
 error() {
index 255db328e609783d0acfa901acaa95acb704a8f4..5fb618c4075225e08b66f630040394e129d92f2b 100644 (file)
@@ -103,226 +103,3 @@ qwebirc.irc.BaseCommandParser = new Class({
     return this.parentObject.getActiveWindow();
   }
 });
-
-qwebirc.irc.CommandParser = new Class({
-  Extends: qwebirc.irc.BaseCommandParser,
-  initialize: function(parentObject) {
-    this.parent(parentObject);
-    
-    this.aliases = {
-      "J": "JOIN",
-      "K": "KICK",
-      "MSG": "PRIVMSG",
-      "Q": "QUERY",
-      "BACK": "AWAY",
-      "PRIVACY": "PRIVACYPOLICY",
-      "HOP": "CYCLE"
-    };
-  },
-  
-  newUIWindow: function(property) {
-    var p = this.parentObject.ui[property];
-    if(!$defined(p)) {
-      this.getActiveWindow().errorMessage("Current UI does not support that command.");
-    } else {
-      p.bind(this.parentObject.ui)();
-    }
-  },
-  
-  /* [require_active_window, splitintoXargs, minargs, function] */
-  cmd_ME: [true, undefined, undefined, function(args) {
-    if(args == undefined)
-      args = "";
-
-    var target = this.getActiveWindow().name;
-    if(!this.send("PRIVMSG " + target + " :\x01ACTION " + args + "\x01"))
-      return;
-
-    this.newQueryLine(target, "ACTION", args, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});
-  }],
-  cmd_CTCP: [false, 3, 2, function(args) {
-    var target = args[0];
-    var type = args[1].toUpperCase();
-    var message = args[2];
-    
-    if(message == undefined)
-      message = "";
-
-    if(message == "") {
-      if(!this.send("PRIVMSG " + target + " :\x01" + type + "\x01"))
-        return;
-    } else {
-      if(!this.send("PRIVMSG " + target + " :\x01" + type + " " + message + "\x01"))
-        return;
-    }
-  
-    this.newTargetLine(target, "CTCP", message, {"x": type});
-  }],
-  cmd_PRIVMSG: [false, 2, 2, function(args) {
-    var target = args[0];
-    var message = args[1];
-    
-    if(!this.parentObject.isChannel(target))
-      this.parentObject.pushLastNick(target);
-    if(this.send("PRIVMSG " + target + " :" + message))
-      this.newQueryLine(target, "MSG", message, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});  
-  }],
-  cmd_NOTICE: [false, 2, 2, function(args) {
-    var target = args[0];
-    var message = args[1];
-
-    if(this.send("NOTICE " + target + " :" + message)) {
-      if(this.parentObject.isChannel(target)) {
-        this.newTargetLine(target, "NOTICE", message, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});
-      } else {
-        this.newTargetLine(target, "NOTICE", message);
-      }
-    }
-  }],
-  cmd_QUERY: [false, 2, 1, function(args) {
-    if(this.parentObject.isChannel(args[0])) {
-      this.getActiveWindow().errorMessage("Can't target a channel with this command.");
-      return;
-    }
-
-    this.parentObject.newWindow(args[0], qwebirc.ui.WINDOW_QUERY, true);
-
-    if((args.length > 1) && (args[1] != ""))
-      return ["SAY", args[1]];
-  }],
-  cmd_SAY: [true, undefined, undefined, function(args) {
-    if(args == undefined)
-      args = "";
-      
-    return ["PRIVMSG", this.getActiveWindow().name + " " + args]
-  }],
-  cmd_LOGOUT: [false, undefined, undefined, function(args) {
-    this.parentObject.ui.logout();
-  }],
-  cmd_OPTIONS: [false, undefined, undefined, function(args) {
-    this.newUIWindow("optionsWindow");
-  }],
-  cmd_EMBED: [false, undefined, undefined, function(args) {
-    this.newUIWindow("embeddedWindow");
-  }],
-  cmd_PRIVACYPOLICY: [false, undefined, undefined, function(args) {
-    this.newUIWindow("privacyWindow");
-  }],
-  cmd_ABOUT: [false, undefined, undefined, function(args) {
-    this.newUIWindow("aboutWindow");
-  }],
-  cmd_QUOTE: [false, 1, 1, function(args) {
-    this.send(args[0]);
-  }],
-  cmd_KICK: [true, 2, 1, function(args) {
-    var channel = this.getActiveWindow().name;
-    
-    var message = "";
-    var target = args[0];
-    
-    if(args.length == 2)
-      message = args[1];
-    
-    this.send("KICK " + channel + " " + target + " :" + message);
-  }],
-  automode: function(direction, mode, args) {
-    var channel = this.getActiveWindow().name;
-
-    var modes = direction;
-    for(var i=0;i<args.length;i++)
-      modes = modes + mode;
-      
-    this.send("MODE " + channel + " " + modes + " " + args.join(" "));
-  },
-  cmd_OP: [true, 6, 1, function(args) {
-    this.automode("+", "o", args);
-  }],
-  cmd_DEOP: [true, 6, 1, function(args) {
-    this.automode("-", "o", args);
-  }],
-  cmd_VOICE: [true, 6, 1, function(args) {
-    this.automode("+", "v", args);
-  }],
-  cmd_DEVOICE: [true, 6, 1, function(args) {
-    this.automode("-", "v", args);
-  }],
-  cmd_TOPIC: [true, 1, 1, function(args) {
-    this.send("TOPIC " + this.getActiveWindow().name + " :" + args[0]);
-  }],
-  cmd_AWAY: [false, 1, 0, function(args) {
-    this.send("AWAY :" + (args?args[0]:""));
-  }],
-  cmd_QUIT: [false, 1, 0, function(args) {
-    this.send("QUIT :" + (args?args[0]:""));
-  }],
-  cmd_CYCLE: [true, 1, 0, function(args) {
-    var c = this.getActiveWindow().name;
-    
-    this.send("PART " + c + " :" + (args?args[0]:"rejoining. . ."));
-    this.send("JOIN " + c);
-  }],
-  cmd_JOIN: [false, 2, 1, function(args) {
-    var channels = args.shift();
-    
-    var schans = channels.split(",");
-    var fchans = [];
-    
-    var warn = false;
-    
-    schans.forEach(function(x) {
-      if(!this.parentObject.isChannel(x)) {
-        x = "#" + x;
-        warn = true;
-      }
-      fchans.push(x);
-    }.bind(this));
-
-    if(warn)
-      this.getActiveWindow().infoMessage("Channel names begin with # (corrected automatically).");
-      
-    this.send("JOIN " + fchans.join(",") + " " + args.join(" "));
-  }],
-  cmd_UMODE: [false, 1, 0, function(args) {
-    this.send("MODE " + this.parentObject.getNickname() + (args?(" " + args[0]):""));
-  }],
-  cmd_AUTOJOIN: [false, undefined, undefined, function(args) {
-    var realargs = this.parentObject.options.autojoin.splitMax(" ", 2);
-    return ["JOIN", realargs[0], realargs[1]];
-  }],
-  cmd_CLEAR: [false, undefined, undefined, function(args) {
-    var w = this.getActiveWindow().lines;
-    while(w.childNodes.length > 0)
-      w.removeChild(w.firstChild);
-  }],
-  cmd_PART: [false, 2, 0, function(args) {
-    var w = this.getActiveWindow();
-    var message = "";
-    var channel;
-    
-    if(w.type != qwebirc.ui.WINDOW_CHANNEL) {
-      if(!args || args.length == 0) {
-        w.errorMessage("Insufficient arguments for command.");
-        return;
-      }
-      channel = args[0];  
-      if(args.length > 1)
-        message = args[1];
-    } else {
-      if(!args || args.length == 0) {
-        channel = w.name;
-      } else {
-        var isChan = this.parentObject.isChannel(args[0]);
-        if(isChan) {
-          channel = args[0];
-          if(args.length > 1)
-            message = args[1];
-        } else {
-          channel = w.name;
-          message = args.join(" ");
-        }
-      }
-    }
-    
-    this.send("PART " + channel + " :" + message);
-  }]
-});
diff --git a/js/irc/commands.js b/js/irc/commands.js
new file mode 100644 (file)
index 0000000..42418b6
--- /dev/null
@@ -0,0 +1,222 @@
+qwebirc.irc.Commands = new Class({
+  Extends: qwebirc.irc.BaseCommandParser,
+  initialize: function(parentObject) {
+    this.parent(parentObject);
+    
+    this.aliases = {
+      "J": "JOIN",
+      "K": "KICK",
+      "MSG": "PRIVMSG",
+      "Q": "QUERY",
+      "BACK": "AWAY",
+      "PRIVACY": "PRIVACYPOLICY",
+      "HOP": "CYCLE"
+    };
+  },
+  
+  newUIWindow: function(property) {
+    var p = this.parentObject.ui[property];
+    if(!$defined(p)) {
+      this.getActiveWindow().errorMessage("Current UI does not support that command.");
+    } else {
+      p.bind(this.parentObject.ui)();
+    }
+  },
+  
+  /* [require_active_window, splitintoXargs, minargs, function] */
+  cmd_ME: [true, undefined, undefined, function(args) {
+    if(args == undefined)
+      args = "";
+
+    var target = this.getActiveWindow().name;
+    if(!this.send("PRIVMSG " + target + " :\x01ACTION " + args + "\x01"))
+      return;
+
+    this.newQueryLine(target, "ACTION", args, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});
+  }],
+  cmd_CTCP: [false, 3, 2, function(args) {
+    var target = args[0];
+    var type = args[1].toUpperCase();
+    var message = args[2];
+    
+    if(message == undefined)
+      message = "";
+
+    if(message == "") {
+      if(!this.send("PRIVMSG " + target + " :\x01" + type + "\x01"))
+        return;
+    } else {
+      if(!this.send("PRIVMSG " + target + " :\x01" + type + " " + message + "\x01"))
+        return;
+    }
+  
+    this.newTargetLine(target, "CTCP", message, {"x": type});
+  }],
+  cmd_PRIVMSG: [false, 2, 2, function(args) {
+    var target = args[0];
+    var message = args[1];
+    
+    if(!this.parentObject.isChannel(target))
+      this.parentObject.pushLastNick(target);
+    if(this.send("PRIVMSG " + target + " :" + message))
+      this.newQueryLine(target, "MSG", message, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});  
+  }],
+  cmd_NOTICE: [false, 2, 2, function(args) {
+    var target = args[0];
+    var message = args[1];
+
+    if(this.send("NOTICE " + target + " :" + message)) {
+      if(this.parentObject.isChannel(target)) {
+        this.newTargetLine(target, "NOTICE", message, {"@": this.parentObject.getNickStatus(target, this.parentObject.nickname)});
+      } else {
+        this.newTargetLine(target, "NOTICE", message);
+      }
+    }
+  }],
+  cmd_QUERY: [false, 2, 1, function(args) {
+    if(this.parentObject.isChannel(args[0])) {
+      this.getActiveWindow().errorMessage("Can't target a channel with this command.");
+      return;
+    }
+
+    this.parentObject.newWindow(args[0], qwebirc.ui.WINDOW_QUERY, true);
+
+    if((args.length > 1) && (args[1] != ""))
+      return ["SAY", args[1]];
+  }],
+  cmd_SAY: [true, undefined, undefined, function(args) {
+    if(args == undefined)
+      args = "";
+      
+    return ["PRIVMSG", this.getActiveWindow().name + " " + args]
+  }],
+  cmd_LOGOUT: [false, undefined, undefined, function(args) {
+    this.parentObject.ui.logout();
+  }],
+  cmd_OPTIONS: [false, undefined, undefined, function(args) {
+    this.newUIWindow("optionsWindow");
+  }],
+  cmd_EMBED: [false, undefined, undefined, function(args) {
+    this.newUIWindow("embeddedWindow");
+  }],
+  cmd_PRIVACYPOLICY: [false, undefined, undefined, function(args) {
+    this.newUIWindow("privacyWindow");
+  }],
+  cmd_ABOUT: [false, undefined, undefined, function(args) {
+    this.newUIWindow("aboutWindow");
+  }],
+  cmd_QUOTE: [false, 1, 1, function(args) {
+    this.send(args[0]);
+  }],
+  cmd_KICK: [true, 2, 1, function(args) {
+    var channel = this.getActiveWindow().name;
+    
+    var message = "";
+    var target = args[0];
+    
+    if(args.length == 2)
+      message = args[1];
+    
+    this.send("KICK " + channel + " " + target + " :" + message);
+  }],
+  automode: function(direction, mode, args) {
+    var channel = this.getActiveWindow().name;
+
+    var modes = direction;
+    for(var i=0;i<args.length;i++)
+      modes = modes + mode;
+      
+    this.send("MODE " + channel + " " + modes + " " + args.join(" "));
+  },
+  cmd_OP: [true, 6, 1, function(args) {
+    this.automode("+", "o", args);
+  }],
+  cmd_DEOP: [true, 6, 1, function(args) {
+    this.automode("-", "o", args);
+  }],
+  cmd_VOICE: [true, 6, 1, function(args) {
+    this.automode("+", "v", args);
+  }],
+  cmd_DEVOICE: [true, 6, 1, function(args) {
+    this.automode("-", "v", args);
+  }],
+  cmd_TOPIC: [true, 1, 1, function(args) {
+    this.send("TOPIC " + this.getActiveWindow().name + " :" + args[0]);
+  }],
+  cmd_AWAY: [false, 1, 0, function(args) {
+    this.send("AWAY :" + (args?args[0]:""));
+  }],
+  cmd_QUIT: [false, 1, 0, function(args) {
+    this.send("QUIT :" + (args?args[0]:""));
+  }],
+  cmd_CYCLE: [true, 1, 0, function(args) {
+    var c = this.getActiveWindow().name;
+    
+    this.send("PART " + c + " :" + (args?args[0]:"rejoining. . ."));
+    this.send("JOIN " + c);
+  }],
+  cmd_JOIN: [false, 2, 1, function(args) {
+    var channels = args.shift();
+    
+    var schans = channels.split(",");
+    var fchans = [];
+    
+    var warn = false;
+    
+    schans.forEach(function(x) {
+      if(!this.parentObject.isChannel(x)) {
+        x = "#" + x;
+        warn = true;
+      }
+      fchans.push(x);
+    }.bind(this));
+
+    if(warn)
+      this.getActiveWindow().infoMessage("Channel names begin with # (corrected automatically).");
+      
+    this.send("JOIN " + fchans.join(",") + " " + args.join(" "));
+  }],
+  cmd_UMODE: [false, 1, 0, function(args) {
+    this.send("MODE " + this.parentObject.getNickname() + (args?(" " + args[0]):""));
+  }],
+  cmd_AUTOJOIN: [false, undefined, undefined, function(args) {
+    var realargs = this.parentObject.options.autojoin.splitMax(" ", 2);
+    return ["JOIN", realargs[0], realargs[1]];
+  }],
+  cmd_CLEAR: [false, undefined, undefined, function(args) {
+    var w = this.getActiveWindow().lines;
+    while(w.childNodes.length > 0)
+      w.removeChild(w.firstChild);
+  }],
+  cmd_PART: [false, 2, 0, function(args) {
+    var w = this.getActiveWindow();
+    var message = "";
+    var channel;
+    
+    if(w.type != qwebirc.ui.WINDOW_CHANNEL) {
+      if(!args || args.length == 0) {
+        w.errorMessage("Insufficient arguments for command.");
+        return;
+      }
+      channel = args[0];  
+      if(args.length > 1)
+        message = args[1];
+    } else {
+      if(!args || args.length == 0) {
+        channel = w.name;
+      } else {
+        var isChan = this.parentObject.isChannel(args[0]);
+        if(isChan) {
+          channel = args[0];
+          if(args.length > 1)
+            message = args[1];
+        } else {
+          channel = w.name;
+          message = args.join(" ");
+        }
+      }
+    }
+    
+    this.send("PART " + channel + " :" + message);
+  }]
+});
index 0ebd7297f7b9dc5ad8cba9bfefed49594079f3ab..08b1c0120d4859c0d825ea7b8732ad066b72c8a4 100644 (file)
@@ -14,7 +14,7 @@ qwebirc.irc.IRCClient = new Class({
     this.modeprefixes = "ov";
     this.windows = {};
     
-    this.commandparser = new qwebirc.irc.CommandParser(this);
+    this.commandparser = new qwebirc.irc.Commands(this);
     this.exec = this.commandparser.dispatch.bind(this.commandparser);
 
     this.statusWindow = this.ui.newClient(this);
index 1993f3c1007c79ee15485cab67236c8736ba1549..e522778894118e82c27406a7a68f5fbf98cc116a 100644 (file)
@@ -1,6 +1,6 @@
 import os, sys
 
-IRC_BASE = ["ircconnection", "irclib", "numerics", "baseircclient", "irctracker", "commandparser", "ircclient", "commandhistory"]
+IRC_BASE = ["ircconnection", "irclib", "numerics", "baseircclient", "irctracker", "commandparser", "commands", "ircclient", "commandhistory"]
 UI_BASE = ["baseui", "baseuiwindow", "colour", "url", "theme", "hilightcontroller", "menuitems", "tabcompleter", "panes/connect", "panes/embed", "panes/options", "panes/about", "panes/privacypolicy"]
 
 DEBUG_BASE = ["qwebirc", "version", "jslib", ["irc/%s" % x for x in IRC_BASE], ["ui/%s" % x for x in UI_BASE], "qwebircinterface", "auth", "sound"]