X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/6652de5e1abcaac3ee2f4bf17e5a4b847fcadb0d..f3351c18b266ca069a603437e6157810cf2fcaa1:/IkiWiki/Plugin/htmlscrubber.pm

diff --git a/IkiWiki/Plugin/htmlscrubber.pm b/IkiWiki/Plugin/htmlscrubber.pm
index 41cf6c991..540662c2b 100644
--- a/IkiWiki/Plugin/htmlscrubber.pm
+++ b/IkiWiki/Plugin/htmlscrubber.pm
@@ -3,15 +3,15 @@ package IkiWiki::Plugin::htmlscrubber;
 
 use warnings;
 use strict;
-use IkiWiki;
+use IkiWiki 2.00;
 
 sub import { #{{{
-	IkiWiki::hook(type => "sanitize", id => "htmlscrubber",
-		call => \&sanitize);
+	hook(type => "sanitize", id => "htmlscrubber", call => \&sanitize);
 } # }}}
 
-sub sanitize ($) { #{{{
-	return scrubber()->scrub(shift);
+sub sanitize (@) { #{{{
+	my %params=@_;
+	return scrubber()->scrub($params{content});
 } # }}}
 
 my $_scrubber;
@@ -19,6 +19,7 @@ sub scrubber { #{{{
 	return $_scrubber if defined $_scrubber;
 	
 	eval q{use HTML::Scrubber};
+	error($@) if $@;
 	# Lists based on http://feedparser.org/docs/html-sanitization.html
 	$_scrubber = HTML::Scrubber->new(
 		allow => [qw{
@@ -30,20 +31,23 @@ sub scrubber { #{{{
 			span strike strong sub sup table tbody td textarea
 			tfoot th thead tr tt u ul var
 		}],
-		default => [undef, { map { $_ => 1 } qw{
-			abbr accept accept-charset accesskey action
-			align alt axis border cellpadding cellspacing
-			char charoff charset checked cite class
-			clear cols colspan color compact coords
-			datetime dir disabled enctype for frame
-			headers height href hreflang hspace id ismap
-			label lang longdesc maxlength media method
-			multiple name nohref noshade nowrap prompt
-			readonly rel rev rows rowspan rules scope
-			selected shape size span src start summary
-			tabindex target title type usemap valign
-			value vspace width
-		}}],
+		default => [undef, { (
+			map { $_ => 1 } qw{
+				abbr accept accept-charset accesskey action
+				align alt axis border cellpadding cellspacing
+				char charoff charset checked cite class
+				clear cols colspan color compact coords
+				datetime dir disabled enctype for frame
+				headers height href hreflang hspace id ismap
+				label lang longdesc maxlength media method
+				multiple name nohref noshade nowrap prompt
+				readonly rel rev rows rowspan rules scope
+				selected shape size span src start summary
+				tabindex target title type usemap valign
+				value vspace width
+			} ),
+			"/" => 1, # emit proper <hr /> XHTML
+			}],
 	);
 	return $_scrubber;
 } # }}}