3 package IkiWiki::Plugin::otl;
8 use open qw{:utf8 :std};
11 hook(type => "getsetup", id => "otl", call => \&getsetup);
12 hook(type => "htmlize", id => "otl", call => \&htmlize);
19 rebuild => 1, # format plugin
26 # Munge up check boxes to look a little bit better.
27 my $checked=htmllink($params{page}, $params{page},
28 "smileys/star_on.png", linktext => "[X]");
29 my $unchecked=htmllink($params{page}, $params{page},
30 "smileys/star_off.png", linktext => "[_]");
31 $params{content}=~s/^(\s*)\[X\]\s/${1}$checked /mg;
32 $params{content}=~s/^(\s*)\[_\]\s/${1}$unchecked /mg;
34 # Can't use open2 since otl2html doesn't play nice with buffering.
35 # Instead, fork off a child process that will run otl2html and feed
36 # it the content. Then read otl2html's response.
41 $pid = open(KID_TO_READ, "-|");
42 unless (defined $pid) {
45 debug("failed to fork: $@");
46 return $params{content};
56 $pid = open(KID_TO_WRITE, "|-");
57 unless (defined $pid) {
60 debug("failed to fork: $@");
61 print $params{content};
68 if (! exec 'otl2html', '-S', '/dev/null', '-T', '/dev/stdin') {
69 debug("failed to run otl2html: $@");
70 print $params{content};
75 print KID_TO_WRITE $params{content};
82 my $ret=<KID_TO_READ>;
88 $ret=~s/<div class="Footer">.*//s;