package Mason::Plugin::HTMLFilters::Filters;
BEGIN {
$Mason::Plugin::HTMLFilters::Filters::VERSION = '0.03';
}
use Mason::PluginRole;
my %html_escape = ( '&' => '&', '>' => '>', '<' => '<', '"' => '"' );
my $html_escape = qr/([&<>"])/;
method HTML () {
sub {
my $text = $_[0];
$text =~ s/$html_escape/$html_escape{$1}/mg;
return $text;
};
}
*H = *HTML;
method HTMLEntities (@args) {
require HTML::Entities;
sub {
HTML::Entities::encode_entities( $_[0], @args );
};
}
method URI () {
use bytes;
sub {
my $text = $_[0];
$text =~ s/([^a-zA-Z0-9_.-])/uc sprintf("%%%02x",ord($1))/eg;
return $text;
};
}
*U = *URI;
method HTMLPara () {
sub {
my $text = $_[0];
return "<p>\n" . join( "\n</p>\n\n<p>\n", split( /(?:\r?\n){2,}/, $text ) ) . "</p>\n";
};
}
method HTMLParaBreak () {
sub {
my $text = $_[0];
$text =~ s|(\r?\n){2,}|$1<br />$1<br />$1|g;
return $text;
};
}
method FillInForm ($form_data, %options) {
require HTML::FillInForm;
sub {
my $html = $_[0];
return $html if !defined($form_data);
return HTML::FillInForm->fill( \$html, $form_data, %options );
};
}
1;