rustdoc: Refactor markdown_pass
This commit is contained in:
parent
2dd5b3ace6
commit
2ac6dbc9ba
3 changed files with 47 additions and 34 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue