aboutsummaryrefslogtreecommitdiff
path: root/doc/patchqueue/html_tidy_plugin.mdwn
blob: a8b9f2728d83eb93a87b0b410b6b0ee49f6bb083 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Obvious and straightforward ;-)
tidy should be probably added to Suggests -- doc/ikiwiki.setup should also be updated.  
(yes, I'm too lazy today...)

-- [[Faidon]]

---

	#!/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.
	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