]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/htmlbalance.pm
monotone: When getting the log, tell monotone how many entries we want, rather than...
[git.ikiwiki.info.git] / IkiWiki / Plugin / htmlbalance.pm
index 667d73b6c5e90af016b7ed65cdc76a0de309a9c9..dcd92055fbebcdeefdbf07d45337e7f0b2f9e360 100644 (file)
@@ -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();