Labyrinth
view release on metacpan or search on metacpan
lib/Labyrinth/MLUtils.pm view on Meta::CPAN
=item cleanup_attr_tframe
=item cleanup_attr_trules
=item cleanup_html
=item cleanup_tag
=item cleanup_close
=item cleanup_cdata
=item cleanup_no_number
=item check_url_valid
=item cleanup_attr_inputtype
=item cleanup_attr_method
=item cleanup_attr_scriptlang
lib/Labyrinth/MLUtils.pm view on Meta::CPAN
if($ignore_comments) {
s[
(?: <!--.*?--> ) |
(?: <[?!].*?> ) |
(?: <([a-z0-9]+)\b((?:[^>'"]|"[^"]*"|'[^']*')*)> ) |
(?: </([a-z0-9]+)> ) |
(?: (.[^<]*) )
][
defined $1 ? cleanup_tag(lc $1, $2) :
defined $3 ? cleanup_close(lc $3) :
defined $4 ? cleanup_cdata($4) :
''
]igesx;
} else {
s[
(?: (<!--.if.*?endif.-->) ) |
(?: <!--.*?--> ) |
(?: <[?!].*?> ) |
(?: <([a-z0-9]+)\b((?:[^>'"]|"[^"]*"|'[^']*')*)> ) |
(?: </([a-z0-9]+)> ) |
(?: (.[^<]*) )
][
defined $1 ? $1 :
defined $2 ? cleanup_tag(lc $2, $3) :
defined $4 ? cleanup_close(lc $4) :
defined $5 ? cleanup_cdata($5) :
''
]igesx;
}
# Close anything that was left open
$_ .= join '', map "</$_->{NAME}>", @stack;
# Where we turned <i><b>foo</i></b> into <i><b>foo</b></i><b></b>,
# take out the pointless <b></b>.
1 while s#<($auto_deinterleave_pattern)\b[^>]*>( |\s)*</\1>##go;
lib/Labyrinth/MLUtils.pm view on Meta::CPAN
# configured to be auto deinterleaved.
unless (grep {! exists $auto_deinterleave{$_->{NAME}} } @close) {
pop @close;
$html .= join '', map {$_->{FULL}} reverse @close;
unshift @stack, @close;
}
return $html;
}
sub cleanup_cdata {
local $_ = shift;
return $_ if(scalar @stack and $stack[0]{NAME} eq 'script');
s[ (?: & (
[a-zA-Z0-9]{2,15} |
[#][0-9]{2,6} |
[#][xX][a-fA-F0-9]{2,6} | ) \b ;?
) | ($escape_html_map) | (.)
][
( run in 0.663 second using v1.01-cache-2.11-cpan-454fe037f31 )