NAME

HTML::FillInForm::Lite::JA - HTMLフォームにデータを充填する

VERSION

The document describes HTML::FillInForm::Lite version 1.12

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);

DESCRIPTION

このモジュールはHTMLのフォームにデータを充填します。 これはHTML::FillInFormをPure Perlで再実装したものです。

HTML::FillInFormHTML::Parserによって実装されていますが、 このモジュールは正規表現ベースで実装されています。 その結果、HTML::FillInForm::LiteHTML::FillInFormより最大で2倍ほど 高速に動作します。

METHODS

new(options...)

HTML::FillInForm::Liteのインスタンスを作成します。

受け付けるオプションは以下の通りです。 オプションに未定義値を渡すと、そのオプションそのものを無視します。

fill_password => bool

このオプションを真に設定すると、パスワードも充填されるようになります。

このパスワードの効果はHTML::FillInFormと同じですが、 このオプションを指定しなければ、HTML::FillInForm::Liteは パスワードフィールドを無視します。

ignore_fields => array_ref_of_fields

指定したフォームフィールドを無視するようにします。

target => form_id

form_idをもつフォームのみを処理対象にします。

escape => bool | ref

オプションを指定しないか、1(真)を指定した場合、テキストフィールドに充填される 値はHTMLエスケープされます。

すでに値がHTMLエスケープされている場合は、0(偽)を指定してください。

サブルーチンリファレンスを指定すると、値のエスケープにそのサブルーチンを使います。

このオプションはHTML::FillInFormには存在しません。

decode_entity => bool | ref

このオプションに1(真)を指定した場合、状態を持つフィールド (つまり、radio/checkbox/select)の値にあるHTML実体参照がデコードされます。 しかし,通常はこのオプションは必要ありません。

サブルーチンリファレンスを指定すると、実体参照のデコードに そのサブルーチンを使います。

HTML::FillInFormは自動的に状態フィールドのHTML実体参照をデコードしますが, このオプションそれ自体は存在しません。

layer => :iolayer

ファイルを読み込むときに: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);

fill(source, form_data [, options...])

sourceform_dataで充填します。sourceまたはform_dataが渡されない場合、dieします。

オプションはnew()と同じです。

このメソッドはクラスメソッドとしてもインスタンスメソッドとしても 呼び出せます。

fill()同じoptionsで何度も呼び出す場合は、 fill()の前にあらかじめnew()でインスタンスを作っておくと少し高速になります。 しかし、同じインスタンスにつき一度しか呼び出さないなら、インスタンスを作った としてもパフォーマンスは上がりません。

sourceとしては,スカラーリファレンスか文字列の配列リファレンス, ファイル名,ファイルハンドルを渡すことが出来ます。

form_dataとしては,ハッシュリファレンスかparam()メソッドを持つ オブジェクト,アクセサを持つ任意のオブジェクト,前述のいずれかからなる 配列リファレンスを渡すことが出来ます。

form_dataがオブジェクトであれば,そのメソッドはリストコンテキストで呼ばれます。したがって,フィールドに手を付けたくない場合,undefではなく空リスト()を返さなければいけません。

DEPENDENCIES

Perl 5.8.1以上

NOTES

HTML::FillInFormとの互換性

このモジュールはHTML::FillInFormバージョン2の新しい構文のみ実装しています。

HTML::FillInForm::Lite::CompatHTML::FillInFormバージョン1の構文をサポートし, オプションのデフォルト値もHTML::FillInFormと同じになっています。

古いHTMLとの互換性

このモジュールはXHTML1.xを処理するように設計されています。 HTML4.xの大部分もサポートはしていますが、一部制限があります。

まず、HTML4では許されている属性名の省略はできません。

たとえば:

<INPUT TYPE=checkbox NAME=foo CHECKED> - NG.
<INPUT TYPE=checkbox NAME=foo CHECKED=CHECKED> - OK, ただし古い書き方
<input type="checkbox" name="foo" checked="checked" /> - OK, 正しいXHTML

さらに、このモジュールは常に属性値の大文字・小文字を区別します。 上記の例では、type属性の値は小文字でなければなりません。

さらに、閉じタグは省略できません。たとえば以下のようなコードは単に無視します。

<select name="foo">
	<option>bar
	<option>baz
</select>

正しいXHTMLで書けばこれらの問題は起こりません。

コメントの扱い

HTML::FillInForm::Liteはコメントやその他の無視すべきものを理解しないので、 処理できるものは全て処理します。

このことが問題になることがあります。たとえば以下のコード:

<script> document.write("<input name='foo' />") </script>

これは次のような誤ったコードに置換されます:

<script> document.write("<input name='foo' value="bar" />") </script>

このような問題を避けるためにignore_fieldsオプションが使えます。

BUGS

No bugs have been reported.

Please report any bug or feature request to <gfuji(at)cpan.org>, or through RT http://rt.cpan.org/.

SEE ALSO

HTML::FillInForm.

HTML::FillInForm::Lite.

HTML::FillInForm::Lite::Compat.

AUTHOR

Goro Fuji (藤 吾郎) <gfuji(at)cpan.org>

LICENSE AND COPYRIGHT

Copyright (c) 2008-2010 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.