diff options
| author | fukachan <fukachan> | 2003-06-03 14:00:06 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2003-06-03 14:00:06 +0000 |
| commit | 1e012c76f62465759a12b3d62e4e87f0e423f72d (patch) | |
| tree | f1c1db6de35f6e0128cfd5264460f124e14f5abf /fml/lib/Mail/Message/THREAD.euc-jp | |
| parent | d829a3b0bee7e470b3a7cf410840d00f4d999e64 (diff) | |
| download | fml8-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-jp | 56 |
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) { + +の処理の順番はどうでもいいです。 |
