=encoding utf-8 =head1 NAME HTML::FillInForm::Lite::JA - HTMLフォームにデータを充填する =head1 VERSION The document describes HTML::FillInForm::Lite version 1.07 =head1 SYNOPSIS use HTML::FillInForm::Lite; use CGI; my $q = CGI->new(); my $h = HTML::FillInForm::Lite->new(); $output = $h->fill(\$html, $q); $output = $h->fill(\@html, \%data); $output = $h->fill(\*HTML, \&my_param); $output = $h->fill('t.html', [$q, \%default]); $output = $h->fill(\$html, $q, fill_password => 0, # it is default ignore_fields => ['foo', 'bar'], target => $form_id, ); # Moreover, it accept any object as data # (these classes come form Class::DBI's SYNOPSIS) my $artist = Music::Artist->insert({ id => 1, name => 'U2' }); $output = $h->fill(\$html, $artist); my $cd = Music::CD->retrieve(1); $output = $h->fill(\$html, $cd); =head1 DESCRIPTION このモジュールはHTMLのフォームにデータを充填します。 これはCをPure Perlで再実装したものです。 CはCによって実装されていますが、 このモジュールは正規表現ベースで実装されています。 その結果、CはCより最大で2倍ほど 高速に動作します。 =head1 METHODS =head2 new(options...) Cのインスタンスを作成します。 受け付けるオプションは以下の通りです。 オプションに未定義値を渡すと、そのオプションそのものを無視します。 =over 4 =item fill_password => I このオプションを真に設定すると、パスワードも充填されるようになります。 このパスワードの効果はCと同じですが、 このオプションを指定しなければ、Cは パスワードフィールドを無視します。 =item ignore_fields => I 指定したフォームフィールドを無視するようにします。 =item target => I Iをもつフォームのみを処理対象にします。 =item escape => I | I オプションを指定しないか、C<1>(真)を指定した場合、テキストフィールドに充填される 値はHTMLエスケープされます。 すでに値がHTMLエスケープされている場合は、C<0>(偽)を指定してください。 サブルーチンリファレンスを指定すると、値のエスケープにそのサブルーチンを使います。 このオプションはCには存在しません。 =item decode_entity => I | I このオプションにC<1>(真)を指定した場合、状態を持つフィールド (つまり、radio/checkbox/select)の値にあるHTML実体参照がデコードされます。 しかし,通常はこのオプションは必要ありません。 サブルーチンリファレンスを指定すると、実体参照のデコードに そのサブルーチンを使います。 Cは自動的に状態フィールドのHTML実体参照をデコードしますが, このオプションそれ自体は存在しません。 =item layer => I<:iolayer> ファイルを読み込むときにI<:iolayer>を指定するようにします。 これはソースとしてファイル名が渡されたときに使われます。 使用例: # UTF-8でエンコードされたファイルを読むとき $fif = HTML::FillInForm::Lite->new(layer => ':utf8'); $output = $fif->fill($file, $fdat); # EUC-JPでエンコードされたファイルを読むとき $fif = HTML::FillInForm::Lite->new(layer => ':encoding(euc-jp)'); $output = $fif->fill($file, $fdat); =back =head2 fill(source, form_data [, options...]) IをIで充填します。IまたはIが渡されない場合、Cします。 オプションはCと同じです。 このメソッドはクラスメソッドとしてもインスタンスメソッドとしても 呼び出せます。 CをB<同じ>Iで何度も呼び出す場合は、 Cの前にあらかじめCでインスタンスを作っておくと少し高速になります。 しかし、同じインスタンスにつき一度しか呼び出さないなら、インスタンスを作った としてもパフォーマンスは上がりません。 Iとしては,スカラーリファレンスか文字列の配列リファレンス, ファイル名,ファイルハンドルを渡すことが出来ます。 Iとしては,ハッシュリファレンスかCメソッドを持つ オブジェクト,アクセサを持つ任意のオブジェクト,前述のいずれかからなる 配列リファレンスを渡すことが出来ます。 Iがオブジェクトであれば,そのメソッドはリストコンテキストで呼ばれます。したがって,フィールドに手を付けたくない場合,Cではなく空リストC<()>を返さなければいけません。 =head1 DEPENDENCIES Perl 5.8.1以上 =head1 NOTES =head2 Cとの互換性 このモジュールはCバージョン2の新しい構文のみ実装しています。 CはCバージョン1の構文をサポートし, オプションのデフォルト値もCと同じになっています。 =head2 古いHTMLとの互換性 このモジュールはXHTML1.xを処理するように設計されています。 HTML4.xの大部分もサポートはしていますが、一部制限があります。 まず、HTML4では許されている属性名の省略はできません。 たとえば: - NG. - OK, ただし古い書き方 - OK, 正しいXHTML さらに、このモジュールは常に属性値の大文字・小文字を区別します。 上記の例では、C属性の値は小文字でなければなりません。 さらに、閉じタグは省略できません。たとえば以下のようなコードは単に無視します。 正しいXHTMLで書けばこれらの問題は起こりません。 =head2 コメントの扱い Cはコメントやその他の無視すべきものを理解しないので、 処理できるものは全て処理します。 このことが問題になることがあります。たとえば以下のコード: これは次のような誤ったコードに置換されます: このような問題を避けるためにCオプションが使えます。 =head1 BUGS No bugs have been reported. Please report any bug or feature request to Egfuji(at)cpan.orgE, or through thr RT L. =head1 SEE ALSO L. L. L. =head1 AUTHOR Goro Fuji (藤 吾郎) Egfuji(at)cpan.orgE =head1 LICENSE AND COPYRIGHT Copyright (c) 2008-2009 Goro Fuji, Some rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut