OSDN Git Service

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