diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-29 20:50:20 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-29 20:50:20 +0000 |
commit | 48f9d393393709d8e998a9eb8d4095773ab185a1 (patch) | |
tree | 81a1ed88811689edf59f081efffa78d86e1bf1b9 /IkiWiki/Plugin | |
parent | aa8bf534d938a65d0fd3db813c52c05ed28099f8 (diff) |
* htmltidy plugin from Faidon.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/htmltidy.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/htmltidy.pm b/IkiWiki/Plugin/htmltidy.pm new file mode 100644 index 000000000..ad405dce5 --- /dev/null +++ b/IkiWiki/Plugin/htmltidy.pm @@ -0,0 +1,32 @@ +#!/usr/bin/perl +# HTML Tidy plugin +# requires 'tidy' binary, found in Debian or http://tidy.sf.net/ +# mostly a proof-of-concept on how to use external filters. +# It is particularly useful when the html plugin is used. +# +# by Faidon Liambotis +package IkiWiki::Plugin::tidy; + +use warnings; +use strict; +use IkiWiki; +use IPC::Open2; + +sub import { #{{{ + IkiWiki::hook(type => "sanitize", id => "tidy", call => \&sanitize); +} # }}} + +sub sanitize ($) { #{{{ + open2(*IN, *OUT, 'tidy -quiet -xml -indent -utf8') or return shift; + # open2 doesn't respect "use open ':utf8'" + binmode (IN, ':utf8'); + binmode (OUT, ':utf8'); + + print OUT shift; + close OUT; + + local $/ = undef; + return <IN>; +} # }}} + +1 |