summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/otl.pm
blob: 6514f0301e81bb39a50e956be727dee0e0c74485 (plain)
  1. #!/usr/bin/perl
  2. # outline markup
  3. package IkiWiki::Plugin::otl;
  4. use warnings;
  5. use strict;
  6. use IkiWiki;
  7. use IPC::Open2;
  8. sub import { #{{{
  9. IkiWiki::hook(type => "htmlize", id => "otl", call => \&htmlize);
  10. } # }}}
  11. sub htmlize ($) { #{{{
  12. my $tries=10;
  13. while (1) {
  14. eval {
  15. open2(*IN, *OUT, 'otl2html -S /dev/null -T /dev/stdin');
  16. };
  17. last unless $@;
  18. $tries--;
  19. if ($tries < 1) {
  20. IkiWiki::debug("failed to run otl2html: $@");
  21. return shift;
  22. }
  23. }
  24. # open2 doesn't respect "use open ':utf8'"
  25. binmode (IN, ':utf8');
  26. binmode (OUT, ':utf8');
  27. print OUT shift;
  28. close OUT;
  29. local $/ = undef;
  30. my $ret=<IN>;
  31. $ret=~s/.*<body>//s;
  32. $ret=~s/<body>.*//s;
  33. $ret=~s/<div class="Footer">.*//s;
  34. return $ret;
  35. } # }}}
  36. 1