t3h c0d35

master
https://www.google.com/accounts/o8/id?id=AItOawnxp2XU8gIribhhGhGuYtU6eMMwHv5gUGI 2011-06-08 19:41:47 +00:00 committed by admin
parent ee7ff1486f
commit f2dca770da
1 changed files with 52 additions and 0 deletions

View File

@ -6,3 +6,55 @@ This plugin lets ikiwiki convert Unix man pages to HTML. It uses
xrefs into hyperlinks.
Sample output: <http://wiki.netbsd.org/users/schmonz/tunefs.8/>
-----
#!/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 = <MANDOCOUT>;
close MANDOCOUT;
waitpid $pid, 0;
my $html = join('', @html_output);
my $link_prefix = $config{usedirs} ? '../' : '';
my $link_suffix = $config{usedirs} ? '/' : '';
$html =~ s|<a class="link-man">(.+?)\((.)\)</a>|<a class="link-man" href="$link_prefix$1.$2$link_suffix">$1($2)</a>|g;
return $html;
}
1