/*!
Divides the document tree into pages.
Each page corresponds is a logical section. There may be pages for
individual modules, pages for the crate, indexes, etc.
*/
use doc::{ItemUtils, PageUtils};
use syntax::ast;
export mk_pass;
fn mk_pass(output_style: config::OutputStyle) -> Pass {
{
name: ~"page",
f: fn~(srv: astsrv::Srv, doc: doc::Doc) -> doc::Doc {
run(srv, doc, output_style)
}
}
}
fn run(
_srv: astsrv::Srv,
doc: doc::Doc,
output_style: config::OutputStyle
) -> doc::Doc {
if output_style == config::DocPerCrate {
return doc;
}
let (result_port, page_chan) = do task::spawn_conversation
|page_port, result_chan| {
comm::send(result_chan, make_doc_from_pages(page_port));
};
find_pages(doc, page_chan);
comm::recv(result_port)
}
type PagePort = comm::Port