aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/htmltidy.pm
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-29 20:50:20 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-29 20:50:20 +0000
commit48f9d393393709d8e998a9eb8d4095773ab185a1 (patch)
tree81a1ed88811689edf59f081efffa78d86e1bf1b9 /IkiWiki/Plugin/htmltidy.pm
parentaa8bf534d938a65d0fd3db813c52c05ed28099f8 (diff)
downloadikiwiki-48f9d393393709d8e998a9eb8d4095773ab185a1.tar
ikiwiki-48f9d393393709d8e998a9eb8d4095773ab185a1.tar.gz
* htmltidy plugin from Faidon.
Diffstat (limited to 'IkiWiki/Plugin/htmltidy.pm')
-rw-r--r--IkiWiki/Plugin/htmltidy.pm32
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