From: https://www.google.com/accounts/o8/id?id=AItOawnxp2XU8gIribhhGhGuYtU6eMMwHv5gUGI Date: Wed, 8 Jun 2011 19:41:47 +0000 (+0000) Subject: t3h c0d35 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=f2dca770da6b7d7e56195e84ae804f1cb5c466b3;p=ikiwiki.git t3h c0d35 --- diff --git a/doc/plugins/contrib/mandoc.mdwn b/doc/plugins/contrib/mandoc.mdwn index e541c194e..e4ff96d08 100644 --- a/doc/plugins/contrib/mandoc.mdwn +++ b/doc/plugins/contrib/mandoc.mdwn @@ -6,3 +6,55 @@ This plugin lets ikiwiki convert Unix man pages to HTML. It uses xrefs into hyperlinks. Sample output: + +----- + + + #!/usr/bin/perl + package IkiWiki::Plugin::mandoc; + + use warnings; + use strict; + use IkiWiki 3.00; + use Encode; + use IPC::Open2; + + sub import { + hook(type => "getsetup", id => "mandoc", call => \&getsetup); + hook(type => "htmlize", id => $_, call => \&htmlize, keepextension => 1) + foreach ('man', 1..9); + } + + sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, # format plugin + section => "format", + }, + } + + sub htmlize (@) { + my %params=@_; + my $content = decode_utf8(encode_utf8($params{content})); + + return $content if $@; + + my $pid = open2(*MANDOCOUT, *MANDOCIN, 'mandoc', '-Thtml'); + binmode($_, ':utf8') foreach (*MANDOCOUT, *MANDOCIN); + + print MANDOCIN $content; + close MANDOCIN; + my @html_output = ; + close MANDOCOUT; + waitpid $pid, 0; + + my $html = join('', @html_output); + my $link_prefix = $config{usedirs} ? '../' : ''; + my $link_suffix = $config{usedirs} ? '/' : ''; + $html =~ s|(.+?)\((.)\)|$1($2)|g; + + return $html; + } + + 1