X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/181bdbe1a9a8a1eb07259466361d98bdc1378499..c47839389abb8e21a94606a2c105e5c1ecf6ed32:/IkiWiki/Plugin/htmlbalance.pm?ds=inline

diff --git a/IkiWiki/Plugin/htmlbalance.pm b/IkiWiki/Plugin/htmlbalance.pm
index 3a2d62d15..da450eea7 100644
--- a/IkiWiki/Plugin/htmlbalance.pm
+++ b/IkiWiki/Plugin/htmlbalance.pm
@@ -9,32 +9,41 @@ package IkiWiki::Plugin::htmlbalance;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
-use HTML::TreeBuilder;
+use IkiWiki 3.00;
 use HTML::Entities;
 
-sub import { #{{{
+sub import {
 	hook(type => "getsetup", id => "htmlbalance", call => \&getsetup);
 	hook(type => "sanitize", id => "htmlbalance", call => \&sanitize);
-} # }}}
+}
 
-sub getsetup () { #{{{
+sub getsetup () {
 	return
 		plugin => {
 			safe => 1,
 			rebuild => undef,
 		},
-} #}}}
+}
 
-sub sanitize (@) { #{{{
+sub sanitize (@) {
 	my %params=@_;
 	my $ret = '';
 
-	my $tree = HTML::TreeBuilder->new_from_content($params{content});
+	eval q{use HTML::TreeBuilder};
+	error $@ if $@;
+	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) {
-			$ret .= $node->as_XML();
+			$ret .= $node->as_HTML(undef, '', {});
 			chomp $ret;
 			$node->delete();
 		}
@@ -44,6 +53,6 @@ sub sanitize (@) { #{{{
 	}
 	$tree->delete();
 	return $ret;
-} # }}}
+}
 
 1