]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/htmlscrubber.pm
move userlink to IkiWiki.pm
[ikiwiki.git] / IkiWiki / Plugin / htmlscrubber.pm
index 41cf6c991c868bb95c3a1bc74dbfbad4e3cf4368..bc613f92477ef55ef384f8a1bbf2887670c0e7a7 100644 (file)
@@ -3,15 +3,15 @@ package IkiWiki::Plugin::htmlscrubber;
 
 use warnings;
 use strict;
 
 use warnings;
 use strict;
-use IkiWiki;
+use IkiWiki 2.00;
 
 sub import { #{{{
 
 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;
 } # }}}
 
 my $_scrubber;
@@ -19,31 +19,39 @@ sub scrubber { #{{{
        return $_scrubber if defined $_scrubber;
        
        eval q{use HTML::Scrubber};
        return $_scrubber if defined $_scrubber;
        
        eval q{use HTML::Scrubber};
+       error($@) if $@;
        # Lists based on http://feedparser.org/docs/html-sanitization.html
        # Lists based on http://feedparser.org/docs/html-sanitization.html
+       # With html 5 video and audio tags added.
        $_scrubber = HTML::Scrubber->new(
                allow => [qw{
        $_scrubber = HTML::Scrubber->new(
                allow => [qw{
-                       a abbr acronym address area b big blockquote br
+                       a abbr acronym address area b big blockquote br br/
                        button caption center cite code col colgroup dd del
                        dfn dir div dl dt em fieldset font form h1 h2 h3 h4
                        button caption center cite code col colgroup dd del
                        dfn dir div dl dt em fieldset font form h1 h2 h3 h4
-                       h5 h6 hr i img input ins kbd label legend li map
-                       menu ol optgroup option p pre q s samp select small
+                       h5 h6 hr hr/ i img input ins kbd label legend li map
+                       menu ol optgroup option p p/ pre q s samp select small
                        span strike strong sub sup table tbody td textarea
                        tfoot th thead tr tt u ul var
                        span strike strong sub sup table tbody td textarea
                        tfoot th thead tr tt u ul var
+                       video audio
                }],
                }],
-               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
+                               poster autoplay loopstart loopend end
+                               playcount controls 
+                       } ),
+                       "/" => 1, # emit proper <hr /> XHTML
+                       }],
        );
        return $_scrubber;
 } # }}}
        );
        return $_scrubber;
 } # }}}