]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/htmlbalance.pm
Fix escaping of filenames in historyurl. (Thanks, aj)
[git.ikiwiki.info.git] / IkiWiki / Plugin / htmlbalance.pm
index 3a2d62d15d47feb20886b594a51d3bc231e62a1b..da450eea7ef691c8f16ed4e5a20a2603b0491c22 100644 (file)
@@ -9,32 +9,41 @@ package IkiWiki::Plugin::htmlbalance;
 
 use warnings;
 use strict;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
-use HTML::TreeBuilder;
+use IkiWiki 3.00;
 use HTML::Entities;
 
 use HTML::Entities;
 
-sub import { #{{{
+sub import {
        hook(type => "getsetup", id => "htmlbalance", call => \&getsetup);
        hook(type => "sanitize", id => "htmlbalance", call => \&sanitize);
        hook(type => "getsetup", id => "htmlbalance", call => \&getsetup);
        hook(type => "sanitize", id => "htmlbalance", call => \&sanitize);
-} # }}}
+}
 
 
-sub getsetup () { #{{{
+sub getsetup () {
        return
                plugin => {
                        safe => 1,
                        rebuild => undef,
                },
        return
                plugin => {
                        safe => 1,
                        rebuild => undef,
                },
-} #}}}
+}
 
 
-sub sanitize (@) { #{{{
+sub sanitize (@) {
        my %params=@_;
        my $ret = '';
 
        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) {
        my @nodes = $tree->disembowel();
        foreach my $node (@nodes) {
                if (ref $node) {
-                       $ret .= $node->as_XML();
+                       $ret .= $node->as_HTML(undef, '', {});
                        chomp $ret;
                        $node->delete();
                }
                        chomp $ret;
                        $node->delete();
                }
@@ -44,6 +53,6 @@ sub sanitize (@) { #{{{
        }
        $tree->delete();
        return $ret;
        }
        $tree->delete();
        return $ret;
-} # }}}
+}
 
 1
 
 1