OSDN Git Service

1.407.2版リリース準備 release-1.407.2
authorOlyutorskii <olyutorskii@users.osdn.me>
Thu, 2 Dec 2010 14:06:05 +0000 (23:06 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Thu, 2 Dec 2010 14:06:05 +0000 (23:06 +0900)
CHANGELOG.txt
pom.xml
src/main/java/jp/sourceforge/jindolf/parser/HtmlAdapter.java
src/main/java/jp/sourceforge/jindolf/parser/SysEventHandler.java
src/main/java/jp/sourceforge/jindolf/parser/SysEventParser.java

index 81c0abd..0755751 100644 (file)
@@ -4,6 +4,9 @@
 JinParser 変更履歴\r
 \r
 \r
+1.407.2 (2010-12-02)\r
+    ・G国メッセージ追加に伴い JinCore 1.206.2 版に対応。\r
+\r
 1.406.2 (2010-11-29)\r
     ・G国メッセージ追加に伴い JinCore 1.205.2 版に対応。\r
 \r
diff --git a/pom.xml b/pom.xml
index 1d7eb88..2852c71 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
     <groupId>jp.sourceforge.jindolf</groupId>
     <artifactId>jinparser</artifactId>
 
-    <version>1.406.3-SNAPSHOT</version>
+    <version>1.407.2</version>
 
     <packaging>jar</packaging>
     <name>JinParser</name>
         <dependency>
             <groupId>jp.sourceforge.jindolf</groupId>
             <artifactId>jincore</artifactId>
-            <version>1.205.3-SNAPSHOT</version>
+            <version>1.206.2</version>
             <scope>compile</scope>
         </dependency>
 
index 80356fd..2aef8fc 100644 (file)
@@ -390,6 +390,18 @@ public abstract class HtmlAdapter implements HtmlHandler{
     /**\r
      * {@inheritDoc}\r
      * @param content {@inheritDoc}\r
+     * @param avatarRange {@inheritDoc}\r
+     * @throws HtmlParseException {@inheritDoc}\r
+     */\r
+    public void sysEventCheckout(DecodedContent content,\r
+                                   SeqRange avatarRange )\r
+            throws HtmlParseException{\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * {@inheritDoc}\r
+     * @param content {@inheritDoc}\r
      * @param judgeByRange {@inheritDoc}\r
      * @param judgeToRange {@inheritDoc}\r
      * @throws HtmlParseException {@inheritDoc}\r
index 897817c..cf24748 100644 (file)
@@ -196,6 +196,17 @@ public interface SysEventHandler{
         throws HtmlParseException;\r
 \r
     /**\r
+     * CHECKOUTイベントの詳細の通知を受け取る。\r
+     * @param content パース対象の文字列\r
+     * @param avatarRange 失踪したAvatar名の範囲\r
+     * @throws HtmlParseException パースエラー\r
+     * @see jp.sourceforge.jindolf.corelib.SysEventType#CHECKOUT\r
+     */\r
+    void sysEventCheckout(DecodedContent content,\r
+                            SeqRange avatarRange )\r
+        throws HtmlParseException;\r
+\r
+    /**\r
      * JUDGEイベントの詳細の通知を受け取る。\r
      * @param content パース対象の文字列。\r
      * @param judgeByRange 占師Avatar名の範囲\r
index 952b8ca..664c762 100644 (file)
@@ -78,6 +78,7 @@ public class SysEventParser extends AbstractParser{
                 || probePlayerList()\r
                 || probeExecution()\r
                 || probeVanish()\r
+                || probeCheckout()\r
                 ;\r
         if( ! result ){\r
             throw buildParseException();\r
@@ -794,6 +795,55 @@ public class SysEventParser extends AbstractParser{
         return true;\r
     }\r
 \r
+    private static final Pattern CHECKOUT_PATTERN =\r
+            compile(\r
+                 "(?:<br />)*"\r
+                +"(" + AVATAR_REGEX + ")"\r
+                +"\u0020は、宿を去った。"\r
+                +"(?:<br />)*"\r
+            );\r
+\r
+    /**\r
+     * CHECKOUTメッセージのパースを試みる。\r
+     * @return マッチしたらtrue\r
+     * @throws HtmlParseException パースエラー\r
+     */\r
+    private boolean probeCheckout() throws HtmlParseException{\r
+        SeqRange avatarRange  = this.rangepool_1;\r
+\r
+        pushRegion();\r
+\r
+        sweepSpace();\r
+\r
+        boolean hasCheckout = false;\r
+\r
+        for(;;){\r
+            if( ! lookingAtProbe(CHECKOUT_PATTERN)){\r
+                break;\r
+            }\r
+\r
+            if( ! hasCheckout ){\r
+                hasCheckout = true;\r
+                this.sysEventHandler.sysEventType(SysEventType.CHECKOUT);\r
+            }\r
+            avatarRange.setLastMatchedGroupRange(getMatcher(), 1);\r
+\r
+            shrinkRegion();\r
+\r
+            this.sysEventHandler\r
+                .sysEventCheckout(getContent(), avatarRange);\r
+        }\r
+\r
+        if( ! hasCheckout ){\r
+            popRegion();\r
+            return false;\r
+        }\r
+\r
+        sweepSpace();\r
+\r
+        return true;\r
+    }\r
+\r
     /**\r
      * Orderメッセージをパースする。\r
      * @throws HtmlParseException パースエラー\r