2 package IkiWiki
::Plugin
::htmlbalance
;
4 # htmlbalance: Parse and re-serialize HTML to ensure balanced tags
6 # Copyright 2008 Simon McVittie <http://smcv.pseudorandom.co.uk/>
7 # Licensed under the GNU GPL, version 2, or any later version published by the
8 # Free Software Foundation
16 hook
(type
=> "getsetup", id
=> "htmlbalance", call
=> \
&getsetup
);
17 hook
(type
=> "sanitize", id
=> "htmlbalance", call
=> \
&sanitize
);
32 eval q{use HTML::TreeBuilder};
34 my $tree = HTML
::TreeBuilder
->new();
35 $tree->ignore_unknown(0);
36 $tree->ignore_ignorable_whitespace(0);
37 $tree->no_space_compacting(1);
39 $tree->store_comments(0);
40 $tree->store_declarations(0);
42 $tree->parse_content($params{content
});
43 my @nodes = $tree->disembowel();
44 foreach my $node (@nodes) {
46 $ret .= $node->as_HTML(undef, '', {});
51 $ret .= encode_entities
($node);