rustdoc: Refactor markdown_pass

This commit is contained in:
Brian Anderson 2012-02-29 18:10:40 -08:00
parent 2dd5b3ace6
commit 2ac6dbc9ba
3 changed files with 47 additions and 34 deletions

View file

@ -3,6 +3,7 @@ import std::getopts;
export output_format::{}; export output_format::{};
export output_style::{}; export output_style::{};
export config; export config;
export default_config;
export parse_config; export parse_config;
export usage; export usage;

View file

@ -5,16 +5,33 @@ import std::io::writer_util;
export mk_pass; export mk_pass;
fn mk_pass(config: config::config) -> pass {
mk_pass_(config, {|f| f(std::io::stdout()) })
}
// FIXME: This is a really convoluted interface to work around trying // FIXME: This is a really convoluted interface to work around trying
// to get a writer into a unique closure and then being able to test // to get a writer into a unique closure and then being able to test
// what was written afterward // what was written afterward
fn mk_pass( fn mk_pass_(
config: config::config,
give_writer: fn~(fn(io::writer)) give_writer: fn~(fn(io::writer))
) -> pass { ) -> pass {
let f = fn~( let f = fn~(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc {
run(srv, doc, config, give_writer)
};
{
name: "markdown",
f: f
}
}
fn run(
srv: astsrv::srv, srv: astsrv::srv,
doc: doc::cratedoc doc: doc::cratedoc,
) -> doc::cratedoc { _config: config::config,
give_writer: fn~(fn(io::writer))
) -> doc::cratedoc {
fn mods_last(item1: doc::itemtag, item2: doc::itemtag) -> bool { fn mods_last(item1: doc::itemtag, item2: doc::itemtag) -> bool {
fn is_mod(item: doc::itemtag) -> bool { fn is_mod(item: doc::itemtag) -> bool {
@ -39,12 +56,6 @@ fn mk_pass(
write_markdown(sorted_doc, writer); write_markdown(sorted_doc, writer);
} }
doc doc
};
{
name: "markdown",
f: f
}
} }
#[test] #[test]
@ -858,7 +869,7 @@ mod test {
let port = comm::port(); let port = comm::port();
let chan = comm::chan(port); let chan = comm::chan(port);
let pass = mk_pass {|f| let pass = mk_pass_(config::default_config("")) {|f|
let buffer = io::mk_mem_buffer(); let buffer = io::mk_mem_buffer();
let writer = io::mem_buffer_writer(buffer); let writer = io::mem_buffer_writer(buffer);
f(writer); f(writer);

View file

@ -108,7 +108,7 @@ fn main(args: [str]) {
} }
}; };
run(config.input_crate); run(config);
} }
fn time<T>(what: str, f: fn() -> T) -> T { fn time<T>(what: str, f: fn() -> T) -> T {
@ -120,14 +120,15 @@ fn time<T>(what: str, f: fn() -> T) -> T {
} }
#[doc = "Runs rustdoc over the given file"] #[doc = "Runs rustdoc over the given file"]
fn run(source_file: str) { fn run(config: config::config) {
let default_name = source_file; let source_file = config.input_crate;
astsrv::from_file(source_file) {|srv| astsrv::from_file(source_file) {|srv|
time("wait_ast") {|| time("wait_ast") {||
astsrv::exec(srv) {|_ctxt| () } astsrv::exec(srv) {|_ctxt| () }
}; };
let doc = time("extract") {|| let doc = time("extract") {||
let default_name = source_file;
extract::from_srv(srv, default_name) extract::from_srv(srv, default_name)
}; };
run_passes(srv, doc, [ run_passes(srv, doc, [
@ -144,7 +145,7 @@ fn run(source_file: str) {
unindent_pass::mk_pass(), unindent_pass::mk_pass(),
sort_item_name_pass::mk_pass(), sort_item_name_pass::mk_pass(),
sort_item_type_pass::mk_pass(), sort_item_type_pass::mk_pass(),
markdown_pass::mk_pass {|f| f(std::io:: stdout()) } markdown_pass::mk_pass(config)
]); ]);
} }
} }