rustdoc: Convert markdown writer to a writer_factory

This commit is contained in:
Brian Anderson
2012-03-03 23:56:38 -08:00
parent 0b2ffa854f
commit 0e3cee747a
3 changed files with 79 additions and 28 deletions

View File

@@ -2,13 +2,14 @@
import markdown_writer::writer;
import markdown_writer::writer_util;
import markdown_writer::writer_factory;
export mk_pass;
export header_kind, header_name, header_text;
fn mk_pass(writer: writer) -> pass {
fn mk_pass(writer_factory: writer_factory) -> pass {
let f = fn~(srv: astsrv::srv, doc: doc::doc) -> doc::doc {
run(srv, doc, writer)
run(srv, doc, writer_factory)
};
{
@@ -20,7 +21,7 @@ fn mk_pass(writer: writer) -> pass {
fn run(
srv: astsrv::srv,
doc: doc::doc,
writer: writer
writer_factory: writer_factory
) -> doc::doc {
fn mods_last(item1: doc::itemtag, item2: doc::itemtag) -> bool {
@@ -42,7 +43,7 @@ fn run(
"mods last", mods_last
).f(srv, doc);
write_markdown(sorted_doc, writer);
write_markdown(sorted_doc, writer_factory);
ret doc;
}
@@ -79,10 +80,10 @@ type ctxt = {
fn write_markdown(
doc: doc::doc,
writer: writer
writer_factory: writer_factory
) {
let ctxt = {
w: writer
w: writer_factory(doc::cratepage(doc.cratedoc()))
};
write_crate(ctxt, doc.cratedoc());
@@ -944,23 +945,19 @@ mod test {
fn write_markdown_str(
doc: doc::doc
) -> str {
let (writer, future) = markdown_writer::future_writer();
write_markdown(doc, writer);
ret future::get(future);
let (writer_factory, po) = markdown_writer::future_writer_factory();
write_markdown(doc, writer_factory);
ret tuple::second(comm::recv(po));
}
fn write_markdown_str_srv(
srv: astsrv::srv,
doc: doc::doc
) -> str {
let config = {
output_style: config::doc_per_crate
with config::default_config("")
};
let (writer, future) = markdown_writer::future_writer();
let pass = mk_pass(writer);
let (writer_factory, po) = markdown_writer::future_writer_factory();
let pass = mk_pass(writer_factory);
pass.f(srv, doc);
ret future::get(future);
ret tuple::second(comm::recv(po));
}
#[test]