2011年6月26日

[Namazu-devel-ja 1806] Re:podフィルタ

臼田です。

perl スクリプトの mediatype は
http://suika.fam.cx/~wakaba/wiki/sw/n/text+*
http://potting.syuriken.jp/potting_conv/understanding_utis_J/chapter4.html
のあたりをみると事例としては
text/perl, text/x-perl, text/perlscript, text/x-perl-script
があるようですが、どれも一般的ではないようですね。

このフィルタは perl のソースコードも対象として動作するものと
思われるので、 pod 部分のみを処理するか、ソースも含めて処理するか
を選択できるオプションがあると良いと思います。

外部コマンドの pod2tml を使用していますが、 perl の標準モジュールに
pod を処理するものがたくさんあるようです。
http://perldoc.perl.org/perlmodlib.html#THE-PERL-MODULE-LIBRARY

テキストに変換するものをうまく使えば外部コマンドや filter/html.pl
に渡さずに処理できるでしょう。
Perl のバージョンによって含まれているものが異なるので
環境に依存しないようにする注意は必要です。

環境依存といえば
Perl も5.8より前のものはメンテナンスされなくなっているので
http://www.cpan.org/src/README.html
Namazu も次のリリースぐらいから対象環境を見直したいですね。

臼田幸生


On 2011/06/26, at 14:49, Shigekazu Aoyagi wrote:

> 青柳です。
>
> フィルタ作成の練習としてpodフィルタを作成してみました。
>
> と言っても真面目にpodを解析する処理を実装したわけではなく、pod2htmlを
> 使ってhtmlに変換し、あとはhtml.plにお任せしただけという簡単実装です。
> フィルタ自体もrtf.plをコピーして少し修正しただけです。
>
>
> 悩んだというか、困ったのは mediatype と magic についてです。
>
> mediatype は IANA には規定がないようですので、rfc.plにならって
> text/plain; x-type=pod というように定義してみました。
>
> magic については、pod に特徴的な文字列をいくつか addSpecials()で
> 登録したのですが、心配なのは登場位置です。
> File::MMagic::checktype_data() ではキーワードの登場位置が早いものを
> 優先して判定するようになっているようですが、podの場合はその特性上
> ソースコード本体が書かれたあとに書かれます。そのソースコードに
> 先に他の文書のキーワードが登場すると判定を誤る可能性があります。
> 実際、HTML.pmなどはtext/htmlと誤判定してしまいました。
>
> 一応、'use strict;' や 'use warnings' や 'package' なども
> 登録することで改善しましたが、これらは必須というわけではありませんから
> やはり誤判定の可能性は残るような気がします。
> --
> Shigekazu Aoyagi <aoyagi@xxxxx>
> <pod.pl>_______________________________________________
> Namazu-devel-ja mailing list
> Namazu-devel-ja@xxxxx
> http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja


投稿者 xml-rpc : 2011年6月26日 17:03
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104982
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。