/*!
* 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 doc::{item_utils, page_utils};
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 {
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 page_port = comm::port