X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/2d857e6aeb8eb959551f292578bfe4bf66cc16f1..3a46e7c7f1e33928e2306f9a629936fce43013f7:/IkiWiki/Plugin/htmlbalance.pm?ds=sidebyside

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();