OSDN Git Service

from subversion repository
[jindolf/JinParser.git] / src / main / java / jp / sourceforge / jindolf / parser / TalkHandler.java
1 /*\r
2  * handler for parse talk-part\r
3  *\r
4  * Copyright(c) 2009 olyutorskii\r
5  * $Id: TalkHandler.java 989 2010-03-13 17:17:20Z olyutorskii $\r
6  */\r
7 \r
8 package jp.sourceforge.jindolf.parser;\r
9 \r
10 import jp.sourceforge.jindolf.corelib.TalkType;\r
11 \r
12 /**\r
13  * 人狼BBSの発言部XHTML断片をパースするためのハンドラ。\r
14  *\r
15  * このハンドラの全メソッドはパーサ{@link HtmlParser}から呼び出される。\r
16  *\r
17  * パーサが発言箇所を発見すると、まず最初に\r
18  * {@link #startTalk()}が呼び出される。\r
19  * 発言内容に従い、このハンドラの様々なメソッドが0回以上呼び出される。\r
20  * 最後に{@link #endTalk()}が呼び出される。\r
21  * その後パーサは次の発言を探し始める。\r
22  *\r
23  * 一部のメソッドに渡される{@link DecodedContent}文字列オブジェクトは\r
24  * mutableである。\r
25  * 後々で内容が必要になるならば、ハンドラはSeqRangeで示されたこの内容の\r
26  * 必要な箇所をコピーして保存しなければならない。\r
27  *\r
28  * フラグメントや属性値中の文字参照記号列の解釈はハンドラ側の責務とする。\r
29  *\r
30  * 各メソッドは、各々の判断で{@link HtmlParseException}をスローする\r
31  * ことにより、パース作業を中断させることができる。\r
32  */\r
33 public interface TalkHandler{\r
34 \r
35     /**\r
36      * 発言部パース開始の通知を受け取る。\r
37      * @throws HtmlParseException パースエラー\r
38      */\r
39     void startTalk()\r
40             throws HtmlParseException;\r
41 \r
42     /**\r
43      * 発言部パース終了の通知を受け取る。\r
44      * @throws HtmlParseException パースエラー\r
45      */\r
46     void endTalk()\r
47             throws HtmlParseException;\r
48 \r
49     /**\r
50      * 白発言番号を受け取る。※G国only。\r
51      * 負の値が渡ってきた場合は白発言でないので無視してよい。\r
52      * @param talkNo 白発言番号\r
53      * @throws HtmlParseException パースエラー\r
54      */\r
55     void talkNo(int talkNo)\r
56             throws HtmlParseException;\r
57 \r
58     /**\r
59      * 発言部ID(Aタグのname属性)の通知を受け取る。\r
60      * @param content パース対象文字列\r
61      * @param idRange IDの範囲\r
62      * @throws HtmlParseException パースエラー\r
63      */\r
64     void talkId(DecodedContent content, SeqRange idRange)\r
65             throws HtmlParseException;\r
66 \r
67     /**\r
68      * 発言したAvatar名の通知を受け取る。\r
69      * @param content パース対象文字列\r
70      * @param avatarRange Avatar名の範囲\r
71      * @throws HtmlParseException パースエラー\r
72      */\r
73     void talkAvatar(DecodedContent content, SeqRange avatarRange)\r
74             throws HtmlParseException;\r
75 \r
76     /**\r
77      * 発言時刻の通知を受け取る。\r
78      * @param hour 時間(24時間制)\r
79      * @param minute 分\r
80      * @throws HtmlParseException パースエラー\r
81      */\r
82     void talkTime(int hour, int minute)\r
83             throws HtmlParseException;\r
84 \r
85     /**\r
86      * 発言者の顔アイコンURLの通知を受け取る。\r
87      * @param content パース対象文字列\r
88      * @param urlRange URLの範囲。\r
89      * @throws HtmlParseException パースエラー\r
90      */\r
91     void talkIconUrl(DecodedContent content, SeqRange urlRange)\r
92             throws HtmlParseException;\r
93 \r
94     /**\r
95      * 発言種別の通知を受け取る。\r
96      * @param type 発言種別\r
97      * @throws HtmlParseException パースエラー\r
98      */\r
99     void talkType(TalkType type)\r
100             throws HtmlParseException;\r
101 \r
102     /**\r
103      * 発言テキスト内容の通知を受け取る。\r
104      * 1発言のパース中に複数回呼ばれる事もありうる。\r
105      * @param content パース対象文字列\r
106      * @param textRange テキストの範囲\r
107      * @throws HtmlParseException パースエラー\r
108      */\r
109     void talkText(DecodedContent content, SeqRange textRange)\r
110             throws HtmlParseException;\r
111 \r
112     /**\r
113      * 発言テキスト内のBRタグ出現の通知を受け取る。\r
114      * 1発言のパース中に複数回呼ばれる事もありうる。\r
115      * @throws HtmlParseException パースエラー\r
116      */\r
117     void talkBreak()\r
118             throws HtmlParseException;\r
119 \r
120     // TODO 「発言取り消し」リンクの検出メソッドは必要?\r
121 \r
122 }\r