diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-08-18 21:48:03 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-08-18 21:48:03 +0000 |
commit | 7f58a84dea11b24bf175388b2562fcd1afad9762 (patch) | |
tree | 1837a0ffd24b28989b950cdbe7a1fdf09b58273c /IkiWiki/Plugin | |
parent | 05a298c47363e66e139f76b8a198202964ce3962 (diff) |
* Add otl format plugin, which handles files as created by vimoutliner.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/otl.pm | 41 | ||||
-rw-r--r-- | IkiWiki/Plugin/wikitext.pm | 1 |
2 files changed, 42 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/otl.pm b/IkiWiki/Plugin/otl.pm new file mode 100644 index 000000000..6406483ff --- /dev/null +++ b/IkiWiki/Plugin/otl.pm @@ -0,0 +1,41 @@ +#!/usr/bin/perl +# outline markup +package IkiWiki::Plugin::otl; + +use warnings; +use strict; +use IkiWiki; +use IPC::Open2; + +sub import { #{{{ + IkiWiki::hook(type => "htmlize", id => "otl", call => \&htmlize); +} # }}} + +sub htmlize ($) { #{{{ + my $tries=10; + while (1) { + eval { + open2(*IN, *OUT, 'otl2html -S /dev/null -T /dev/stdin'); + }; + last unless $@; + $tries--; + if ($tries < 1) { + IkiWiki::debug("failed to run otl2html: $@"); + return shift; + } + } + # open2 doesn't respect "use open ':utf8'" + binmode (IN, ':utf8'); + binmode (OUT, ':utf8'); + + print OUT shift; + close OUT; + + local $/ = undef; + my $ret=<IN>; + $ret=~s/.*<body>//s; + $ret=~s/<body>.*//s; + return $ret; +} # }}} + +1 diff --git a/IkiWiki/Plugin/wikitext.pm b/IkiWiki/Plugin/wikitext.pm index 8b8cbe75e..9fa87dafb 100644 --- a/IkiWiki/Plugin/wikitext.pm +++ b/IkiWiki/Plugin/wikitext.pm @@ -4,6 +4,7 @@ package IkiWiki::Plugin::wikitext; use warnings; use strict; +use IkiWiki; use Text::WikiFormat; sub import { #{{{ |