OSDN Git Service

メソッド複雑性の減少対策
authorOlyutorskii <olyutorskii@users.osdn.me>
Thu, 28 Apr 2011 10:35:12 +0000 (19:35 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Thu, 28 Apr 2011 10:35:12 +0000 (19:35 +0900)
src/main/java/jp/sourceforge/jindolf/parser/HtmlParser.java

index a80b3c3..3c99d6f 100644 (file)
@@ -16,6 +16,9 @@ import jp.sourceforge.jindolf.corelib.VillageState;
  */\r
 public class HtmlParser extends AbstractParser{\r
 \r
+    private static final String SP = "\u0020";\r
+\r
+\r
     private BasicHandler basicHandler;\r
     private final TalkParser     talkParser     = new TalkParser(this);\r
     private final SysEventParser sysEventParser = new SysEventParser(this);\r
@@ -103,13 +106,13 @@ public class HtmlParser extends AbstractParser{
             compile(\r
                   "("\r
                     +"<form"\r
-                    +"\u0020" + "action=\"index\\.rb\""\r
-                    +"\u0020" + "method=\"post\""\r
-                    +"\u0020" + "class=\"login_form\""\r
+                    +SP + "action=\"index\\.rb\""\r
+                    +SP + "method=\"post\""\r
+                    +SP + "class=\"login_form\""\r
                     +">"\r
                 + ")|("\r
                     +"<div"\r
-                    +"\u0020" + "class=\"login_form\""\r
+                    +SP + "class=\"login_form\""\r
                     +">"\r
                 + ")"\r
             );\r
@@ -123,7 +126,7 @@ public class HtmlParser extends AbstractParser{
     private static final Pattern USERID_PATTERN =\r
             compile(\r
                   "name=\"user_id\""\r
-                + "\u0020"\r
+                + SP\r
                 + "value=\"([^\"]*)\""\r
             );\r
     private static final Pattern C_FORM_PATTERN =\r
@@ -177,7 +180,7 @@ public class HtmlParser extends AbstractParser{
                     +"([0-9]+)"                       // 月\r
                     +"/"\r
                     +"([0-9]+)"                       // 日\r
-                    +"\u0020"\r
+                    +SP\r
                     +"(?:(?:(午前)|(午後))\u0020)?"  // AMPM\r
                     +"([0-9]+)"                       // 時\r
                     +"(?:時\u0020|\\:)"\r
@@ -331,8 +334,6 @@ public class HtmlParser extends AbstractParser{
     private void parseMessage() throws HtmlParseException{\r
         setContextErrorMessage("lost message");\r
 \r
-        SeqRange nameRange = this.rangepool_1;\r
-\r
         boolean skipGarbage = true;\r
 \r
         for(;;){\r
@@ -357,30 +358,7 @@ public class HtmlParser extends AbstractParser{
             }\r
             shrinkRegion();\r
 \r
-            sweepSpace();\r
-\r
-            lookingAtAffirm(O_MSGKIND_PATTERN);\r
-            if(isGroupMatched(1)){\r
-                shrinkRegion();\r
-                this.sysEventParser.parseAnnounce();\r
-            }else if(isGroupMatched(2)){\r
-                shrinkRegion();\r
-                this.sysEventParser.parseOrder();\r
-            }else if(isGroupMatched(3)){\r
-                shrinkRegion();\r
-                this.sysEventParser.parseExtra();\r
-            }else if(isGroupMatched(5)){\r
-                nameRange.setLastMatchedGroupRange(getMatcher(), 5);\r
-                int talkNo = -1;\r
-                if(isGroupMatched(4)){\r
-                    talkNo = parseGroupedInt(4);\r
-                }\r
-                shrinkRegion();\r
-                this.talkParser.parseTalk(talkNo, nameRange);\r
-            }else{\r
-                assert false;\r
-                throw buildParseException();\r
-            }\r
+            dispatchFamily();\r
 \r
             lookingAtAffirm(C_DIV_PATTERN);\r
             shrinkRegion();\r
@@ -389,6 +367,41 @@ public class HtmlParser extends AbstractParser{
         return;\r
     }\r
 \r
+    /**\r
+     * イベント種別によって処理を振り分ける。\r
+     * @throws HtmlParseException パースエラー\r
+     */\r
+    private void dispatchFamily() throws HtmlParseException{\r
+        sweepSpace();\r
+\r
+        SeqRange nameRange = this.rangepool_1;\r
+\r
+        lookingAtAffirm(O_MSGKIND_PATTERN);\r
+        if(isGroupMatched(1)){\r
+            shrinkRegion();\r
+            this.sysEventParser.parseAnnounce();\r
+        }else if(isGroupMatched(2)){\r
+            shrinkRegion();\r
+            this.sysEventParser.parseOrder();\r
+        }else if(isGroupMatched(3)){\r
+            shrinkRegion();\r
+            this.sysEventParser.parseExtra();\r
+        }else if(isGroupMatched(5)){\r
+            nameRange.setLastMatchedGroupRange(getMatcher(), 5);\r
+            int talkNo = -1;\r
+            if(isGroupMatched(4)){\r
+                talkNo = parseGroupedInt(4);\r
+            }\r
+            shrinkRegion();\r
+            this.talkParser.parseTalk(talkNo, nameRange);\r
+        }else{\r
+            assert false;\r
+            throw buildParseException();\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
     private static final Pattern O_LISTTABLE_PATTERN =\r
             compile("<table\u0020class=\"list\">");\r
     private static final Pattern ACTIVEVILLAGE =\r