implement Wiki2html;
include "sys.m";
sys: Sys;
include "draw.m";
include "bufio.m";
bufio: Bufio;
Iobuf: import bufio;
include "wiki.m";
wiki: Wiki;
Whist, Wdoc, Wpage: import wiki;
include "arg.m";
arg: Arg;
Wiki2html: module {
init: fn(ctxt: ref Draw->Context, args: list of string);
};
init(nil: ref Draw->Context, args:list of string)
{
sys = load Sys Sys->PATH;
wiki = load Wiki Wiki->PATH;
bufio = load Bufio Bufio->PATH;
arg = load Arg Arg->PATH;
wiki->init(bufio);
t := wiki->Tpage;
h: string;
doc: ref Whist;
arg->init(args);
while((c := arg->opt()) != 0)
case c {
'd' =>
wiki->setwikidir(arg->earg());
'h' =>
t = wiki->Thistory;
'o' =>
t = wiki->Toldpage;
'D' =>
t = wiki->Tdiff;
}
args = arg->argv();
if(len args != 1)
usage();
if(t == wiki->Thistory || t==wiki->Tdiff)
doc = wiki->gethistory(int hd args);
else
doc = wiki->getcurrent(int hd args);
if(doc == nil){
sys->print("doc: %r");
exit;
}
if((h = wiki->tohtml(doc, doc.doc[doc.ndoc-1], t)) == nil){
sys->print("wiki2html: %r");
exit;
}
sys->print("%s", h);
}
usage()
{
sys->fprint(sys->fildes(2), "usage: wiki2html [-d dir] wikifile\n");
exit;
}