summaryrefslogtreecommitdiff
path: root/fml/lib/Mail/Message/THREAD.euc-jp
blob: 9fde84321803619a120dd140d020f0a313a3aaf4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
		����åɤˤĤ���


�� Mail::Message::DB::_analyze_thread()

����åɤΰ�¸�ط���Ĵ�٤������ _thread_analyze() ������ΰ�ĤǤ���
���δؿ��� 

	HASH_REF(ref_key_list)

	doubly linked list
		HASH_REF(prev_key)
		HASH_REF(next_key)

�򹹿����Ƥ��ޤ���prev_key �� next_key �ϺǤ⻲�ȴط��ζᤤ����Ʊ�Τ�
��ߥ�󥯤�ɽ���Ƥ��ޤ���

���ơ�HASH_REF(ref_key_list) �ϡ����Τ褦�˹�������ޤ���

ref_key_list �˼�ʬ�� ID �����ꤹ��( { id => id } )��

for $message_id (In-Reply-To �� References �ˤդ��ޤ��ID) {

	inv_message_id hash
		$message_id ���黲�Ȥ���Ƥ��� ID ���Ф�

	ref_key_list->{ ���Ȥ���Ƥ���ID } �˸������� ID ���ɲ�

}

���Ȥ��С�����101��������Ƥ���Ȥ�������101��100�ؤΥե��������Ȥ���
���礦�����ξ�硢next_key �� { 100 => 101 } �Ǥ��ꡢprev_key �� { 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) {

�ν����ν��֤Ϥɤ��Ǥ⤤���Ϥ��Ǥ���




�� Mail::Message::ToTHML::_print_thread()

���줬�ºݤ˥���åɤΰ�¸�ط��� HTML ������ؿ��Ǥ���

��ǰŪ�ˤ�

   _print_thread() {
   
      for (ref_key_list id �Υꥹ��) {
            if (�ꥹ�Ȥ���Ȥ�ʣ��) {
		# ���ȤǻȤ�����˥���å��夷�Ƥ���
                $self->{ _thread_list }->{ $id } = $buf;
            }

           print_ul()
           print_li()
           _print_thread() (recursive call)
      }
   
      print_ul_end() # recursive �β������ </UL> ����Ϥ���
   }


  [TODO]
	$self->{ _thread_list } �ϥ����������ɡ�
	����ν����Τ���� db �˽񤤤Ƥ����٤�����ʤ��Τ���