namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: divide filtering process.
knok@xxxxxxxxxxxxx (NOKUBI Takatsugu) wrote:
>> # filter分離版は現在gzip, man, rfcmまでが実装できています。
>
> とりあえず、一通りの作業は完了したのでcommitしました。
さきほど co して確認してみました。まだよく見ていませんが、フィ
ルタ処理が load_document に統合されているあたり、私の期待通
りの実装で嬉しいです。:)
ところで、 gzip.pl.inの
if ($stat == Z_OK() or $stat == Z_STREAM_END()) {
$$contref = $inf;
} else {
die 'Bad compressed data.';
}
で die するのはよくないと思います。 warn するだけでよいでしょ
う。その際、 $$contref を "" にして。
それから、
$$contref = join('', <$fh>);
のようなコードは遅いので、 readfile という効率のよいサブルー
チン (試作品をメイル末尾に添付) を util.pl に用意して
$$contref = util::readfile($fh);
のように書くとよい気がします。…と思って、 util.pl を見てみ
たら、read_file といういまいちなサブルーチンがすでにありまし
た。これはそのうちボツにします。
# util.pl で定義するような、高頻度で使われるサブルーチンには
# 短い名前をつけた方がよい気がしてきました。 The Practice of
# Programming では 1ペイジ目から名前付け規則についての解説が
# 始まっています。要点をまとめると、 "Use descriptive names
# for globals, short names for locals." "Be conistent.",
# "Use active names for functions." (active verbs), "Be
# accurate" になります。ちなみに、"Programmers are often
# encouraged to use long variable names regardless of
# context. That is a mistake: clarity is often achieved
# through brevity." だそうです。ためになるなあ。:-)
> 実は、filter.plに残っている古いコードの残骸を除去するという作業がま
>だ残っていますが、これはぼちぼちとやって行きます。
>
> 次は、できるだけたくさんのファイルをindexさせて、問題がないかの検証
>をしてゆきます。
よろしくお願いします。 Word文書や PDF用のフィルタも用意して
くださいませ。:-)
# フィルタ担当は野首さんということで :-)
-- Satoru Takabayashi
readfile サブルーチンはこんな感じかな?
(コード変換の処理をオプションで指定できた方がよさそう)
#
# readfile:
#
# Reads a specified file and returns its content.
# Takes one argument which can be a file name or IO::File object.
#
my $MAX_SIZE = 100000;
sub readfile ($) {
my ($arg) = @_;
my $fh;
if (ref $arg) {
if ($arg =~ /^IO::File/) {
$fh = $arg;
} else {
warn "$arg: not an IO::File object!\n";
return "";
}
} else {
$fh = fopen_or_die($arg);
}
my $cont = "";
my $size = -s $fh;
if ($size > $MAX_SIZE) {
warn "$arg: too large!\n";
return "";
}
read $fh, $cont, $size;
return $cont;
}