The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

HTML::FillInForm::Lite - Fills in HTML forms with data

VERSION

The document describes HTML::FillInForm version 0.03

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,    \&get_param);
        $output = $h->fill('t.html', [$q, \%default]);

        $output = $h->fill(\$html, $q,
                fill_password => 0, # it is default
                ignore_fields => ['foo', 'bar'],
                        # or disable_fields => [...]
                target        => $form_id,
        );

DESCRIPTION

This module fills in HTML forms with Perl data, which re-implements HTML::FillInForm using regexp-based parser, not using HTML::Parser.

The difference in the parsers makes HTML::FillInForm::Lite 2 or more times faster than HTML::FillInForm.

METHODS

new(options...)

Creates HTML::FillInForm::Lite processer with options.

There are several options. All the methods are disabled when undef is suplied.

Acceptable options are as follows:

fill_password => bool

Unlike HTML::FillInForm, the fill() method ignores passwords by default.

To enable passwords to be filled in, set the option true.

ignore_fields => array_ref_of_fields
disable_fields => array_ref_of_fields

To ignore some fields from filling.

target => form_id

To fill in just the form identified by form_id.

ignore_type => array_ref_of_types

To ignore some types from filling.

Note that it is not implemented in HTML::FillInForm.

escape => bool | ref

If true is provided (or by default), values filled in text fields will be html-escaped, e.g. <tag> to be &lt;tag&gt;.

The values are already html-escaped, set the option false.

If a code reference is provided, it will be used to escape the values.

Note that it not implemented in HTML::FillInForm.

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

Fills in source with form_data.

The options are the same as new()'s.

You can use this method as both class or instance method, but you make multiple calls to fill() with the same options, it is a little faster to call new() before fill().

To clear all the fields, provide form_data with a subroutine returning an empty string, like:

        HTML::FillInForm::Lite->fill($source, sub{ '' });

This is because if returning values are undefined, it will leave the elements untouched.

LIMITATIONS

Compatibility with HTML::FillInForm

This module implements only the new syntax of HTML::FillInForm version 2.

Compatibility with legacy HTML

It understands XHTML 1.x, and also supports a good part of HTML 4.x, but there are some limitations. First, it doesn't understand html-attributes that the name is omitted.

For example:

        <INPUT TYPE=checkbox NAME=foo CHECKED> -- NG.
        <INPUT TYPE=checkbox NAME=foo CHECKED=CHECKED> - OK, but obsolete.
        <input type="checkbox" name="foo" checked="checked" /> - OK, valid XHTML

Then, it always treats the values of attributes case-sensitively. In the example above, the value of type must be lower-case.

Comment handling

This module processes all the processible, not knowing comments nor something that shouldn't be processed.

It may cause problems. Suppose there is a code like:

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

HTML::FillInForm will process the code to be broken:

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

To avoid such problems, you can use the ignore_fields option.

SEE ALSO

HTML::FillInForm.

AUTHOR

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

LICENSE AND COPYRIGHT

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