nmzcat と %FIELD_ALIASES と変数の初期化 ― 2008年05月02日 13時05分49秒
nmzcat は %FIELD_ALIASES (つまり、フィールドの別名)を考慮していないようです。このため、
$ nmzcat msg00000.html
では、author が取り出せていません。
$Document->get_field_info('author');
で、直接 $self->{'_field_info'}{author}; を参照しています。 多くのメディアタイプでは author に著者が入りますが、filter/mhonarc.pl ではfrom に著者が入るためです。
これはこういう仕様だと考えて、nmzcat に "from:" の表示項目も追加するという方法もありますが、$self->{'_field_info'} が %FIELD_ALIASES を考慮した方が良いのではないかと思います。
%FIELD_ALIASES を考慮しようとすると、mknmz の complete_field_info と clean_field_index に相当する処理を行った上でget_field_info でエイアスの参照を行う必要があるでしょう。
ところで、development-2-1 の filter/html.pl の htmlparser_filter では、$fields->{'title'}, $fields->{'author'} を undef で初期化しています。
このため、init_doc で行った '_field_info' の初期化を壊すので、
$ nmzcat msg00000.html
では、$self->{'_field_info'}{author} が未定義となり、
Use of uninitialized value in concatenation (.) or string at /usr/local/bin/nmzcat line 82.
が発生します。 undef で初期化している部分をコメントアウトすれば、このエラーは消えますが、htmlparser_filter 内の処理で $fields->{'title'}, $fields->{'author'} は undef で初期化していることが前提のようなので、別の問題がでそうです。
というところまで調べて力尽きました。
各フィルタの細々とした修正 ― 2008年05月02日 20時50分46秒
フィルタの細々とした修正を行いました。
filter/doccat.pl : (HEAD)
重複するエントリがあったので、これを削除しました。
filter/*.pl: (HEAD)
normalize_document -> normalize_jp_document に変更が 必要なところを変更しました。
filter/*.pl: (development-2-1)
normalize_document -> normalize_eucjp_document に変更が必要なところを変更しました。
filter/*.pl: (HEAD, development-2-1, stable-2-0)
行末の空白を削除しました。
filter/{msword, excel, powerpoint, rtf}.pl: (HEAD, development-2-1, stable-2-0)
- サブルーチンのリファレンスを使った内部フィルタの切り替えに変更
- 不要になった File::Basename の削除
- getSummaryInfo で summary の処理にバグがあったのを修正(stable-2-0 のみ)


最近のコメント