HTML::FillInForm::ForceUTF8 - FillInForm with utf8 encoding


HTML-FillInForm-ForceUTF8 documentation Contained in the HTML-FillInForm-ForceUTF8 distribution.

Index


Code Index:

NAME

Top

HTML::FillInForm::ForceUTF8 - FillInForm with utf8 encoding

SYNOPSIS

Top

  use HTML::FillInForm::ForceUTF8;

  my $fif = HTML::FillInForm::ForceUTF8->new;

  my $fdat;
  $fdat->{foo} = "\x{306a}\x{304c}\x{306e}"; #Unicode flagged
  $fdat->{bar} = "\xe3\x81\xaa\xe3\x81\x8c\xe3\x81\xae"; # UTF8 bytes

  my $output = $fif->fill(
    scalarref => \$html,
    fdat => $fdat
  );




DESCRIPTION

Top

HTML::FillInForm::ForceUTF8 is a subclass of HTML::FillInForm that forces utf8 flag on html and parameters. This allows you to prevent filling garbled result.

SEE ALSO

Top

HTML::FillInForm

AUTHOR

Top

Masahiro Nagano, <kazeburo@nomadscafe.jp>

COPYRIGHT AND LICENSE

Top


HTML-FillInForm-ForceUTF8 documentation Contained in the HTML-FillInForm-ForceUTF8 distribution.

package HTML::FillInForm::ForceUTF8;

use strict;
use warnings;
use base qw(HTML::FillInForm);
use Encode;

our $VERSION = '0.02';

sub fill {
    my ( $self, %option ) = @_;
    if ( exists $option{file} ) {
        if ( ref $option{file} ) {
            binmode $option{file}, ":utf8";
        }
        else {
            open my $fh, ":utf8", $option{file};
            $option{file} = $fh;
        }
    }
    elsif ( exists $option{scalarref} ) {
        Encode::_utf8_on( ${ $option{scalarref} } )
          unless Encode::is_utf8( ${ $option{scalarref} } );
    }
    elsif ( exists $option{arrayref} ) {
        for ( @{ $option{arrayref} } ) {
            Encode::_utf8_on($_) unless Encode::is_utf8($_);
        }
    }
    $self->SUPER::fill(%option);
}

sub _get_param {
    my $self = shift;
    my $ret  = $self->SUPER::_get_param(@_);
    for ( ref($ret) ? @$ret : $ret ) {
        Encode::_utf8_on($_) unless Encode::is_utf8($_);
    }
    return $ret;
}

1;

__END__