summaryrefslogtreecommitdiff
path: root/fml/lib/Mail/Message/THREAD.euc-jp
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-06-03 14:00:06 +0000
committerfukachan <fukachan>2003-06-03 14:00:06 +0000
commit1e012c76f62465759a12b3d62e4e87f0e423f72d (patch)
treef1c1db6de35f6e0128cfd5264460f124e14f5abf /fml/lib/Mail/Message/THREAD.euc-jp
parentd829a3b0bee7e470b3a7cf410840d00f4d999e64 (diff)
downloadfml8-1e012c76f62465759a12b3d62e4e87f0e423f72d.tar.gz
fml8-1e012c76f62465759a12b3d62e4e87f0e423f72d.tar.bz2
fml8-1e012c76f62465759a12b3d62e4e87f0e423f72d.zip
thread logic memo
Diffstat (limited to 'fml/lib/Mail/Message/THREAD.euc-jp')
-rw-r--r--fml/lib/Mail/Message/THREAD.euc-jp56
1 files changed, 56 insertions, 0 deletions
diff --git a/fml/lib/Mail/Message/THREAD.euc-jp b/fml/lib/Mail/Message/THREAD.euc-jp
new file mode 100644
index 00000000..ab8a51c6
--- /dev/null
+++ b/fml/lib/Mail/Message/THREAD.euc-jp
@@ -0,0 +1,56 @@
+○ _analyze_thread()
+
+スレッドの依存関係を調べる処理は _thread_analyze() が真髄の一つだ。
+この関数は HASH_REF(ref_key_list) を更新するためにある。
+
+HASH_REF(ref_key_list) は、次のように更新される。
+
+for $message_id (In-Reply-To と References にふくまれるID) {
+
+ inv_message_id hash
+ $message_id から参照されている ID を割出す
+
+ ref_key_list->{ 参照されているID } に現記事の ID を追加
+
+}
+
+たとえば、記事101を処理しているとし、記事101が100へのフォローだ
+としましょう。そして、101は90と91も参照せよと指示しているとしま
+す。90がスレッドの先頭で、91は90へのフォローだとしましょう。この場合、
+初期状態は次のようになっています。
+
+ref_key_list = {
+ 90 => 91,
+};
+
+101の処理は次のようなループです。
+
+for $message_id (100のmid, 90のmid, 91のmid) {
+ $inv_message_id{ 100のmid } => 100
+ ref_key_list へ追加
+}
+
+結果として
+
+ref_key_list = {
+ 100 => 101,
+ 90 => "91 101",
+ 91 => 101,
+};
+
+
+次に、記事102が101へのフォローなら、ref_key_list は次のようになるだろ
+う。
+
+ref_key_list = {
+ 101 => 102,
+ 100 => "101 102",
+ 90 => "91 101 102",
+ 91 => "101 102",
+};
+
+なお、以上のような処理のため、
+
+ for $message_id (In-Reply-To と References にふくまれるID) {
+
+の処理の順番はどうでもいいです。