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 �˽Ƥ����٤�����ʤ��Τ���
|