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
27 # Munge up check boxes to look a little bit better.
28 my $checked=htmllink($params{page}, $params{page},
29 "smileys/star_on.png", linktext => "[X]");
30 my $unchecked=htmllink($params{page}, $params{page},
31 "smileys/star_off.png", linktext => "[_]");
32 $params{content}=~s/^(\s*)\[X\]\s/${1}$checked /mg;
33 $params{content}=~s/^(\s*)\[_\]\s/${1}$unchecked /mg;
35 # Can't use open2 since otl2html doesn't play nice with buffering.
36 # Instead, fork off a child process that will run otl2html and feed
37 # it the content. Then read otl2html's response.
42 $pid = open(KID_TO_READ, "-|");
43 unless (defined $pid) {
46 debug("failed to fork: $@");
47 return $params{content};
57 $pid = open(KID_TO_WRITE, "|-");
58 unless (defined $pid) {
61 debug("failed to fork: $@");
62 print $params{content};
69 if (! exec 'otl2html', '-S', '/dev/null', '-T', '/dev/stdin') {
70 debug("failed to run otl2html: $@");
71 print $params{content};
76 print KID_TO_WRITE $params{content};
83 my $ret=<KID_TO_READ>;
89 $ret=~s/<div class="Footer">.*//s;