#[doc = "
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.
"];
import syntax::ast;
export mk_pass;
fn mk_pass(output_style: config::output_style) -> 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::output_style
) -> doc::doc {
if output_style == config::doc_per_crate {
ret doc;
}
let result_port = comm::port();
let result_chan = comm::chan(result_port);
let page_chan = do task::spawn_listener |page_port| {
comm::send(result_chan, make_doc_from_pages(page_port));
};
find_pages(doc, page_chan);
comm::recv(result_port)
}
type page_port = comm::port