OSDN Git Service

コマンド関連の処理を別ファイルに分離した
[webchat/WebChat.git] / public / scripts / chatclient.js
index 8b2d4f8..66441c2 100644 (file)
@@ -170,9 +170,8 @@ var $messageTag = null;
 function ParseMessage(msg)\r
 {\r
        var util = new Util();\r
-       var cmd = new CommandParserWhenGet;\r
        msg.message = util.htmlspecialchars(msg.message);\r
-       var childtag = cmd.parse(msg);\r
+       var childtag = $GetCommandParser.parse(msg);\r
 \r
        if(childtag == null)\r
                return;\r
@@ -279,12 +278,11 @@ function quitEventListener(){
 }\r
 \r
 function sidEventListener(){\r
-       var cmd = new CommandParserWhenPost;\r
        var msg = {\r
                name:document.enter_form.name.value,\r
                message:document.chat_form.message.value\r
        };      \r
-       msg.message = cmd.parse(msg);\r
+       msg.message = $PostCommandParser.parse(msg);\r
 \r
        if(msg.message != null && msg.message != "")\r
                $socket.json.emit("send msg",msg);\r
@@ -346,211 +344,6 @@ function CreateNameInfo(time,color,mailto)
 }\r
 \r
 //\r
-// CommandParserクラス\r
-//\r
-function CommandParser()\r
-{\r
-       this.word = new Array;\r
-       this.CommandList;\r
-       this.DefaultCommand = function(msg)\r
-       {\r
-               return msg.message;\r
-       }\r
-\r
-       this.parse = function(msg)\r
-       {\r
-               this.word = msg.message.split(" ");\r
-               if(this.CommandList[this.word[0]])\r
-                       return this.CommandList[this.word[0]](msg,this.word);\r
-               else\r
-                       return this.DefaultCommand(msg);\r
-       }\r
-}\r
-\r
-//\r
-// CommandParserWhenGetクラス\r
-//\r
-//     function(msg,word)\r
-//             msg\r
-//                     msgオブジェクト\r
-//             word\r
-//                     トークンリスト\r
-//             返り値\r
-//                     タグもしくは文字列を返す\r
-//                     nullを返した場合、メッセージリストには何も表示されなくなる\r
-function CommandParserWhenGet()\r
-{\r
-       this.DefaultCommand = function(msg)\r
-       {\r
-               return parseBBCode(msg.message);\r
-       }\r
-       this.CommandList = new Array;\r
-       this.CommandList["/tell"] = function(msg,word)\r
-       {\r
-               if((word[2] == "all")||\r
-                       (word[2] == document.enter_form.name.value)||\r
-                       (word[1] == document.enter_form.name.value)\r
-               ){\r
-                       return $("<span/>").attr("id","whisper").append(parseBBCode(word[3]));\r
-               }else{\r
-                       return null;\r
-               }\r
-       }\r
-       this.CommandList["/enteredby"] = function(msg,word)\r
-       {\r
-               var name = word[1];\r
-               var color = word[2];\r
-               var mailto = word[3];\r
-               var text = sprintf($entered_message,name);\r
-               var date = new Date(Date.parse(msg.date));\r
-               $names[name] = CreateNameInfo(date.getTime(),color,mailto);\r
-               createNameList();\r
-               return text;\r
-       }\r
-       this.CommandList["/quitedby"] = function(msg,word)\r
-       {\r
-               var name = word[1];\r
-               var text = sprintf($quited_message,name);\r
-               delete $names[name];\r
-               createNameList();\r
-               return text;\r
-       }\r
-}\r
-CommandParserWhenGet.prototype = new CommandParser;\r
-\r
-//\r
-// CommandParserWhenPostクラス\r
-//\r
-//msg\r
-//     msgオブジェクト\r
-//word\r
-//     word[0] コマンド名\r
-//             word[1] 単語1\r
-//                     :\r
-//     word[n] 単語n\r
-//     返却値\r
-//             文字列を返す\r
-//             nullを返した場合、送信操作が行われなくなる\r
-function CommandParserWhenPost()\r
-{\r
-       this.CommandList = new Array;\r
-       this.CommandList["/tell"] = function(msg,word)\r
-       {\r
-               word[3] = word[2];\r
-               word[2] = word[1];\r
-               word[1] = msg.name;\r
-               return word.join(" ");\r
-       }\r
-       this.CommandList["/dice"] = function(msg,word)\r
-       {\r
-               if(word.length == 1)\r
-                       text = CastDice("6d1");\r
-               else\r
-                       text = CastDice(word[1]);\r
-               return text;\r
-       }\r
-       this.CommandList["/send"] = function(msg,word)\r
-       {\r
-               if(word.length != 3)\r
-                       return msg.message;\r
-\r
-               var message = sprintf($send_message,document.enter_form.name.value,word[2]);\r
-\r
-               if(word[1] == document.chat_form.rno.value)\r
-                       $socket.json.emit("send msg",{name:$system_name,message:message});\r
-\r
-               var socket = io.connect(location.hostname + "/" + word[1] + "?token="+ encodeURIComponent(document.chat_form.token.value));\r
-               socket.on("error",getErrorMessage);\r
-               socket.on("connect",function(){\r
-                       socket.json.emit("send msg",{name:$system_name,message:message});\r
-               });\r
-\r
-               return null;\r
-       }\r
-       this.CommandList["/setpassword"] = function(msg,word)\r
-       {\r
-               if(word.length != 2)\r
-                       return msg.message;\r
-\r
-               $socket.json.emit("set password",{owner:document.enter_form.name.value,password:word[1]});\r
-\r
-               return null;\r
-       }\r
-}\r
-CommandParserWhenPost.prototype = new CommandParser;\r
-\r
-function ParseDiceParam(number,option)\r
-{\r
-       if(typeof(number) != "undefined")\r
-       {\r
-               var result = new Object();\r
-               result.option = typeof(option) == "undefined" ? null : option;\r
-               result.number = parseInt(number);\r
-               return result;\r
-       }\r
-       return null;\r
-}\r
-\r
-function CastDice(text){\r
-       var p = text.match(/(\d+)D(\d+)C*(\d+)?(\-|\+)?F*(\d+)?(\-|\+)?/i);\r
-       var max = parseInt(p[1]);\r
-       var dice_num = parseInt(p[2]);\r
-       var critical = ParseDiceParam(p[3],p[4]);\r
-       var fanble = ParseDiceParam(p[5],p[6]);\r
-       var total = 0;\r
-       var hasCritical = true;\r
-       var hasFanble = true;\r
-       var util = new Util();\r
-\r
-       text = "[" + text + "] -> ";\r
-       for(var i = 0; i < dice_num; i++)\r
-       {\r
-               var t = util.get_random_number(1,max);\r
-               total += t;\r
-               text += t + " + ";\r
-\r
-               if(hasCritical && critical != null)\r
-               {\r
-                       if(critical.option == "-" && t <= critical.number)\r
-                               hasCritical = true;\r
-                       else if(critical.option == "+" && t >= critical.number)\r
-                               hasCritical = true;\r
-                       else if(critical.option == null && t == critical.number)\r
-                               hasCritical = true;\r
-                       else\r
-                               hasCritical = false;\r
-               }\r
-\r
-               if(hasFanble && fanble != null)\r
-               {\r
-                       if(fanble.option == "-" && t <= fanble.number)\r
-                               hasFanble = true;\r
-                       else if(fanble.option == "+" && t >= fanble.number)\r
-                               hasFanble = true;\r
-                       else if(fanble.option == null && t == fanble.number)\r
-                               hasFanble = true;\r
-                       else\r
-                               hasFanble = false;\r
-               }\r
-       }\r
-\r
-       text = text.slice(0,text.length - 3);   //最後に付く" + "を取り除く\r
-       text += " = " + total;\r
-\r
-       if(critical == null)\r
-               hasCritical = false;\r
-       if(fanble == null)\r
-               hasFanble = false;\r
-\r
-       if(hasCritical)\r
-               text = sprintf($critical_message,text);\r
-       else if(hasFanble)\r
-               text = sprintf($fanble_message,text);\r
-\r
-       return text;\r
-}\r
-\r
-//\r
 // Utilクラス\r
 //\r
 function Util()\r