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 "

\n" . join( "\n

\n\n

\n", split( /(?:\r?\n){2,}/, $text ) ) . "

\n"; }; } method HTMLParaBreak () { sub { my $text = $_[0]; $text =~ s|(\r?\n){2,}|$1
$1
$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;