X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/2d857e6aeb8eb959551f292578bfe4bf66cc16f1..f9b87a9f8b498f3a41614b159dcb278024be70dd:/IkiWiki/Plugin/htmlbalance.pm?ds=inline diff --git a/IkiWiki/Plugin/htmlbalance.pm b/IkiWiki/Plugin/htmlbalance.pm index 667d73b6c..dcd92055f 100644 --- a/IkiWiki/Plugin/htmlbalance.pm +++ b/IkiWiki/Plugin/htmlbalance.pm @@ -10,6 +10,8 @@ package IkiWiki::Plugin::htmlbalance; use warnings; use strict; use IkiWiki 2.00; +use HTML::TreeBuilder; +use HTML::Entities; sub import { #{{{ hook(type => "getsetup", id => "htmlbalance", call => \&getsetup); @@ -28,17 +30,15 @@ sub sanitize (@) { #{{{ my %params=@_; my $ret = ''; - eval { - use HTML::TreeBuilder; - use XML::Atom::Util qw(encode_xml); - }; - - if ($@) { - error($@); - return $params{content}; - } - - my $tree = HTML::TreeBuilder->new_from_content($params{content}); + my $tree = HTML::TreeBuilder->new(); + $tree->ignore_unknown(0); + $tree->ignore_ignorable_whitespace(0); + $tree->no_space_compacting(1); + $tree->p_strict(1); + $tree->store_comments(0); + $tree->store_declarations(0); + $tree->store_pis(0); + $tree->parse_content($params{content}); my @nodes = $tree->disembowel(); foreach my $node (@nodes) { if (ref $node) { @@ -47,7 +47,7 @@ sub sanitize (@) { #{{{ $node->delete(); } else { - $ret .= encode_xml($node); + $ret .= encode_entities($node); } } $tree->delete();