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