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
<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>
/**\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
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
|| probePlayerList()\r
|| probeExecution()\r
|| probeVanish()\r
+ || probeCheckout()\r
;\r
if( ! result ){\r
throw buildParseException();\r
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