From 26d27c533ce178fe36ca0e72a9d76a4c9d85275b Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Thu, 2 Dec 2010 23:06:05 +0900 Subject: [PATCH] =?utf8?q?1.407.2=E7=89=88=E3=83=AA=E3=83=AA=E3=83=BC?= =?utf8?q?=E3=82=B9=E6=BA=96=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 3 ++ pom.xml | 4 +- .../jp/sourceforge/jindolf/parser/HtmlAdapter.java | 12 ++++++ .../jindolf/parser/SysEventHandler.java | 11 +++++ .../sourceforge/jindolf/parser/SysEventParser.java | 50 ++++++++++++++++++++++ 5 files changed, 78 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 81c0abd..0755751 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,9 @@ JinParser 変更履歴 +1.407.2 (2010-12-02) + ・G国メッセージ追加に伴い JinCore 1.206.2 版に対応。 + 1.406.2 (2010-11-29) ・G国メッセージ追加に伴い JinCore 1.205.2 版に対応。 diff --git a/pom.xml b/pom.xml index 1d7eb88..2852c71 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ jp.sourceforge.jindolf jinparser - 1.406.3-SNAPSHOT + 1.407.2 jar JinParser @@ -107,7 +107,7 @@ jp.sourceforge.jindolf jincore - 1.205.3-SNAPSHOT + 1.206.2 compile diff --git a/src/main/java/jp/sourceforge/jindolf/parser/HtmlAdapter.java b/src/main/java/jp/sourceforge/jindolf/parser/HtmlAdapter.java index 80356fd..2aef8fc 100644 --- a/src/main/java/jp/sourceforge/jindolf/parser/HtmlAdapter.java +++ b/src/main/java/jp/sourceforge/jindolf/parser/HtmlAdapter.java @@ -390,6 +390,18 @@ public abstract class HtmlAdapter implements HtmlHandler{ /** * {@inheritDoc} * @param content {@inheritDoc} + * @param avatarRange {@inheritDoc} + * @throws HtmlParseException {@inheritDoc} + */ + public void sysEventCheckout(DecodedContent content, + SeqRange avatarRange ) + throws HtmlParseException{ + return; + } + + /** + * {@inheritDoc} + * @param content {@inheritDoc} * @param judgeByRange {@inheritDoc} * @param judgeToRange {@inheritDoc} * @throws HtmlParseException {@inheritDoc} diff --git a/src/main/java/jp/sourceforge/jindolf/parser/SysEventHandler.java b/src/main/java/jp/sourceforge/jindolf/parser/SysEventHandler.java index 897817c..cf24748 100644 --- a/src/main/java/jp/sourceforge/jindolf/parser/SysEventHandler.java +++ b/src/main/java/jp/sourceforge/jindolf/parser/SysEventHandler.java @@ -196,6 +196,17 @@ public interface SysEventHandler{ throws HtmlParseException; /** + * CHECKOUTイベントの詳細の通知を受け取る。 + * @param content パース対象の文字列 + * @param avatarRange 失踪したAvatar名の範囲 + * @throws HtmlParseException パースエラー + * @see jp.sourceforge.jindolf.corelib.SysEventType#CHECKOUT + */ + void sysEventCheckout(DecodedContent content, + SeqRange avatarRange ) + throws HtmlParseException; + + /** * JUDGEイベントの詳細の通知を受け取る。 * @param content パース対象の文字列。 * @param judgeByRange 占師Avatar名の範囲 diff --git a/src/main/java/jp/sourceforge/jindolf/parser/SysEventParser.java b/src/main/java/jp/sourceforge/jindolf/parser/SysEventParser.java index 952b8ca..664c762 100644 --- a/src/main/java/jp/sourceforge/jindolf/parser/SysEventParser.java +++ b/src/main/java/jp/sourceforge/jindolf/parser/SysEventParser.java @@ -78,6 +78,7 @@ public class SysEventParser extends AbstractParser{ || probePlayerList() || probeExecution() || probeVanish() + || probeCheckout() ; if( ! result ){ throw buildParseException(); @@ -794,6 +795,55 @@ public class SysEventParser extends AbstractParser{ return true; } + private static final Pattern CHECKOUT_PATTERN = + compile( + "(?:
)*" + +"(" + AVATAR_REGEX + ")" + +"\u0020は、宿を去った。" + +"(?:
)*" + ); + + /** + * CHECKOUTメッセージのパースを試みる。 + * @return マッチしたらtrue + * @throws HtmlParseException パースエラー + */ + private boolean probeCheckout() throws HtmlParseException{ + SeqRange avatarRange = this.rangepool_1; + + pushRegion(); + + sweepSpace(); + + boolean hasCheckout = false; + + for(;;){ + if( ! lookingAtProbe(CHECKOUT_PATTERN)){ + break; + } + + if( ! hasCheckout ){ + hasCheckout = true; + this.sysEventHandler.sysEventType(SysEventType.CHECKOUT); + } + avatarRange.setLastMatchedGroupRange(getMatcher(), 1); + + shrinkRegion(); + + this.sysEventHandler + .sysEventCheckout(getContent(), avatarRange); + } + + if( ! hasCheckout ){ + popRegion(); + return false; + } + + sweepSpace(); + + return true; + } + /** * Orderメッセージをパースする。 * @throws HtmlParseException パースエラー -- 2.11.0