FIX plein de bugs introduits avec la Grand Restructuration
[euphorik.git] / js / pageMinichat / commandes.js
index 0a2c38e..bae4604 100644 (file)
@@ -33,6 +33,23 @@ euphorik.Commandes = function(client) {
 
 euphorik.Commandes.statut = {ok : 0, pas_une_commande : 1, erreur_commande : 2};
 
+euphorik.Commandes.liste = {
+   "nick" : {
+      usage : "\\nick <nouveau pseudo",
+      exec : function(args, client) {
+         
+         if (args.length === 0) {
+            return [euphorik.Commandes.statut.erreur_commande, 'Utilisation de la commande : ' + this.usage];
+         }
+   
+         client.pseudo = args[0];
+         $("form#posterMessage input.pseudo").val(client.pseudo);
+   
+         return [euphorik.Commandes.statut.ok, ''];
+      }
+   }      
+};
+
 /**
   * Execute une commande.
   * @return [statut, message], 'message' n'est utilisé que pour le statut 'erreur_commande'.
@@ -40,29 +57,21 @@ euphorik.Commandes.statut = {ok : 0, pas_une_commande : 1, erreur_commande : 2};
 euphorik.Commandes.prototype.exec = function(chaine) {
    chaine = chaine.trim();
    
-   var fragments = chaine.split(/\s*/);
+   var fragments = chaine.split(/\s+/);
    if (fragments.length === 0 || fragments[0].charAt(0) != '/') {
       return [euphorik.Commandes.statut.pas_une_commande, ''];
    }
    
-   var commande = fragments[0].slice(1);
+   var nomCommande = fragments[0].slice(1);
    var args = fragments.slice(1);
    
-   switch (commande) {
-      case "" : return [euphorik.Commandes.statut.erreur_commande, 'La commande est vide'];
-      case "nick" : return this.commandeNick(args);
+   if (nomCommande === "") {
+      return [euphorik.Commandes.statut.erreur_commande, 'La commande est vide'];
    }
    
-   return [euphorik.Commandes.statut.erreur_commande, 'La commande \\' + commande + ' est inconnue'];
-};
-
-euphorik.Commandes.prototype.commandeNick = function(args) {
-   if (args.length === 0) {
-      return [euphorik.Commandes.statut.erreur_commande, 'Utilisation de la commande : "\nick <nouveau pseudo>"'];
+   if (euphorik.Commandes.liste.hasOwnProperty(nomCommande)) {
+      return euphorik.Commandes.liste[nomCommande].exec(args, this.client);
    }
    
-   this.client.pseudo = args[0];
-   $("form#posterMessage input.pseudo").val(this.client.pseudo);
-   
-   return [euphorik.Commandes.statut.ok, ''];
+   return [euphorik.Commandes.statut.erreur_commande, 'La commande \\' + nomCommande + ' est inconnue'];
 };