Skip to content

Commit a8428a8

Browse files
committed
rustdoc: Write fn docs
1 parent d928952 commit a8428a8

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

src/rustdoc/gen.rs

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ type ctxt = {
55

66
fn write_markdown(
77
doc: doc::cratedoc,
8-
_crate: @ast::crate,
8+
crate: @ast::crate,
99
writer: io::writer
1010
) {
1111
let ctxt = {
@@ -14,6 +14,54 @@ fn write_markdown(
1414
};
1515

1616
write_header(ctxt, doc.topmod.name);
17+
write_top_module(ctxt, crate, doc.topmod);
18+
}
19+
20+
fn write_top_module(
21+
ctxt: ctxt,
22+
crate: @ast::crate,
23+
moddoc: doc::moddoc
24+
) {
25+
write_mod_contents(ctxt, crate, moddoc);
26+
}
27+
28+
fn write_mod(
29+
ctxt: ctxt,
30+
crate: @ast::crate,
31+
moddoc: doc::moddoc
32+
) {
33+
write_mod_contents(ctxt, crate, moddoc);
34+
}
35+
36+
fn write_mod_contents(
37+
ctxt: ctxt,
38+
crate: @ast::crate,
39+
moddoc: doc::moddoc
40+
) {
41+
for fndoc in *moddoc.fns {
42+
write_fn(ctxt, crate, fndoc);
43+
}
44+
45+
for moddoc in *moddoc.mods {
46+
write_mod(ctxt, crate, moddoc);
47+
}
48+
}
49+
50+
fn write_fn(
51+
ctxt: ctxt,
52+
crate: @ast::crate,
53+
fndoc: doc::fndoc
54+
) {
55+
import rustc::middle::ast_map;
56+
57+
let map = ast_map::map_crate(*crate);
58+
let decl = alt map.get(fndoc.id) {
59+
ast_map::node_item(@{
60+
node: ast::item_fn(decl, _, _), _
61+
}) { decl }
62+
};
63+
64+
write_fndoc(ctxt, fndoc.name, fndoc, decl);
1765
}
1866

1967
#[doc(
@@ -80,4 +128,13 @@ mod tests {
80128
let markdown = write_markdown_str(doc, ast);
81129
assert str::contains(markdown, "# Crate belch\n");
82130
}
131+
132+
#[test]
133+
fn write_markdown_should_write_function_header() {
134+
let source = "fn func() { }";
135+
let ast = parse::from_str(source);
136+
let doc = extract::extract(ast, "");
137+
let markdown = write_markdown_str(doc, ast);
138+
assert str::contains(markdown, "## Function `func`");
139+
}
83140
}

0 commit comments

Comments
 (0)