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;