blob: d66de5896e2228ca9d29fb4d611e0902099770fb (
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<!--
$FML: hook.sgml,v 1.5 2004/05/22 12:33:49 fukachan Exp $
-->
<chapter id="hook">
<title>
HOOK
</title>
<sect1 id="hook.problems">
<title>
���פ⤷���� HOOK �ˤ����������
</title>
<para>
hook ����̯�ʽ������⤷����ʣ���ʥ������ޥ����Τ��������ɬ�פǤ���
�Ǥ����������ˤ����ƤϤ����Ĥ������꤬����ޤ���
</para>
<para>
�ޤ���&fml4; �� $START_HOOK �Τ褦��ۣ��ʤ�ΤǤϤʤ���
hook ��̾���˰���δ�बɬ�פǤ��礦��
���Τ��� &fml8; �Ǥϡ�����ؿ��κǽ�ȺǸ��HOOK���Ѱդ����硢
���Τ褦�ʥ�������� HOOK ̾�ΤˤʤäƤ��ޤ���
<screen>
$���_�ؿ�_start_hook
$���_�ؿ�_end_hook
</screen>
</para>
<para>
����ˤ�����������ƥ�ȥ��ޥ�ɥ�륷���ƥ�Ƕ��̤� HOOK �ʤɤȤ���
��ΤϤʤ��ʤꡢ�̡���HOOK�����뤳�Ȥ��Ǥ���褦�ˤʤ�ޤ����դˡ�
���̤Τ�Τ����褦�Ȥ���ʤ顢���սƲ�����;)�Ȥ������ȤǤ���
�ޤ����ԡ�����Ф������������顢���������ʤ��Ǥ���͡�(�Ȼפ�����)
<screen>
$distribute_XXX_start_hook = q{ ... };
$YYY_XXX_start_hook = $distribute_XXX_start_hook;
</screen>
</para>
<para>
�ޤ���HOOK �ν����������ɤ��ʤ��Ƥ�ư���ʤ��Ⱥ���Ǥ��礦��
�̾�ƥ⥸�塼��Ǥ�
<screen>
use strict;
</screen>
�ˤʤäƤ��ޤ�����HOOK ��ɾ������ lexical scope �Ǥ�̵�뤹��褦�ˤ���
����ޤ���
�ºݤˤϡ�HOOK ��ɾ������ݤˡ��Ĥͤ�
<screen>
no strict;
HOOK ������
</screen>
�Ȥ�����ʸ���Ѵ�������� eval() ���Ƥ��ޤ���
</para>
<para>
&fml4; �� &fml8; ���礭�ʤ������ΤҤȤĤ��ѿ����ؿ��Υ������פǤ���
&fml4; �ϥ������Х�ʤΤǡ��ɤ�ʴؿ��Ǥ�Ȥ��ޤ�����&fml8; �Ǥϡ�����
�Ϥ����ޤ��ȤϤ������ޤä����꤬���꤬�ʤ��Τ⺤��Τǡ�$curproc
���Ȥ���褦�ʾ��ˤΤ� HOOK ���Ѱդ���Ȥ��ä��롼�뤬ɬ�פǤ��礦��
���ޤΤȤ����������������ˤˤʤäƤ��ޤ���
</para>
</sect1>
<sect1 id="hook.naming.convention">
<title>
hook ��̿̾��§
</title>
<para>
hook ̾����ɸ��Ū�ʷ����ˤĤ��Ƥ�
<screen>
���̾_��å�̾_start_hook
���̾_��å�̾_end_hook
</screen>
�ʤɤȤ��뤳�Ȥˤ��ޤ��������������̾�ϡ�use_XXX_function��(��:
use_article_post_function)��XXX��ʬ�Ǥ�����ä�γ�٤κ٤���HOOK�ˤĤ�
�Ƥϡ����η����Ǥʤ���Τ⤢��ޤ���
</para>
<para>
���Ȥ��С�fmlconf ���ޥ�ɤΥᥤ�����ʬ run() �� HOOK ��̾����
<screen>
fmlconf_run_start_hook
fmlconf_run_end_hook
</screen>
�Ȥʤꡢrun() ����Ǥ� hook �ƤӽФ��ϼ��Τ褦�ʥ����ɤˤʤ�ޤ���
<screen>
sub run
{
my ($curproc, $args) = @_;
my $config = $curproc->{ config };
my $eval = $config->get_hook( 'fmlconf_run_start_hook' );
if ($eval) {
eval qq{ $eval; };
print STDERR $@ if $@;
}
$curproc->_fmlconf($args);
$eval = $config->get_hook( 'fmlconf_run_end_hook' );
if ($eval) {
eval qq{ $eval; };
print STDERR $@ if $@;
}
}
</screen>
</para>
<para>
���¤ˤϤ�äȤ��������ʾ��� HOOK ���ʤ������ؤǤ��礦����
����̾���Ͼ�Ҥ� HOOK �ʳ������ꤷ�ޤ���
ñ��� hook2 �Ǥ����Τ��⤷��ʤ�����
��ǽ�Ǥ���Ф⤦�������䤹��̾���ˤ���٤��Ǥ��礦��
</para>
</sect1>
</chapter>
|