[Mew-dist 2344] Re: imput's hook
Masahiro MURATA ( 村田全寛 )
muse at example.com
1997年 10月 2日 (木) 21:34:54 JST
村田です。
/// On Wed, 01 Oct 1997 23:19:05 +0900
/// Motonori Nakamura wrote:
nakayosh> ということは、$Hook_* には、
nakayosh> $Hook = "&add_header(\@Header, 1, 'From', 'foo at example.com');";
nakayosh> のように、eval される文字列を入れるのではなくて、
nakayosh> $Hook = sub { &add_header(\@Header, 1, 'From', 'foo at example.com'); };
nakayosh> のように匿名サブルーチンへのリファレンスを入れるということでよろ
nakayosh> しいんでしょうか?
> 上記のような変更をした場合にはそういうことになりますし、
> あるいは引数がなければ、$Hook にいきなり &add_header を渡します。
> ただ、このあたりは結構思い付きで書いているだけなので、Hook を必要と
> している人に、どのような仕様が便利であるかを考えて頂きたいと思います。
> 現在実装されている Hook もリクエストに応じて導入したものですし。
最初にリクエストした人,です。
> 渡すべき引数が固定であれば scan.sbr 方式でも良いのですが…
必要とする引数(情報)は作りたい関数によって異なると思います。最初に要望し
たときは,パッチを当てることなしに特殊な処理がしたい(imputの動きを変えたい
),ということでした。ですから,emacs-lisp の xxx-hook のように関数を定義で
きるもの,として Hook 変数を入れて頂きました。
# でも,Hook って私しか使ってないだろうな...
ですから,もし引数が必要な関数を呼びたいのなら,$Hook = sub { ... }; で
も良いでしょうし,もっと複雑なことをするなら引数を取らない関数を定義して,
$Hook = "my_add_header";
sub my_add_header {
...
&add_header(\@Header, 1, 'From', 'foo at example.com');
...
}
とすれば良いと思います。
以下に,私が使っているフック関数(User_requireで指定するファイル)の一部を
示します。
# これは,NIFTY SERVE へのメール・ニュースはオートパイロットプログラムで出
# したい,ということから作ったものです。ヘッダを見て NIFTY SERVE へのメー
# ル・ニュースなら,そのオートパイロットプログラムが参照するディレクトリへ
# 出力するようにするものです。
# これによって,インターネットのメール・ニュース,NIFTY SERVEのメール・ニュー
# ス(フォーラム)は全て Mew で書いて,imput で出すだけでよいようになってい
# ます。
--
村田 全寛 / MURATA Masahiro
-------------- next part --------------
package aaa;
use IM::Message;
$package = "aaa";
...
&init;
sub init
{
$::Hook_PreHeaderconv = "${package}::nifty_newscheck";
$::Hook_PreFinalHeaderProc = "${package}::headercheck";
$::Hook_PreDispatching = "${package}::nifty_maybe_send";
}
#
# nifty_newscheck()
#
sub nifty_newscheck {
local($origfrom);
if ($::News_flag
&& (&header_value(\@::Header, "Newsgroups") =~ /^nifty\./)) {
$Nif_message = 1;
$::Iso2022jp_header_mime_conv = 0;
$origfrom = &header_value(\@::Header, "From");
&add_header(\@::Header, 1, "From", $nifty_from);
}
return 1;
}
sub headercheck {
...
}
#
# DISPATCH THE MESSAGE FOR NIFTY-Serve
#
sub nifty_maybe_send {
}
...
1;
Mew-dist メーリングリストの案内