Skip to content

Commit 1b839a6

Browse files
committed
rustdoc: Write markdown for fn arguments
1 parent 29df58d commit 1b839a6

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

src/rustdoc/gen.rs

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,39 @@ fn write_args(
127127
ctxt: ctxt,
128128
args: [doc::argdoc]
129129
) {
130-
for arg in args {
131-
ctxt.w.write_str("### Argument `" + arg.name + "`: ");
130+
if vec::is_not_empty(args) {
131+
ctxt.w.write_line("Arguments:");
132+
ctxt.w.write_line("");
133+
vec::iter(args) {|arg| write_arg(ctxt, arg) };
134+
ctxt.w.write_line("");
132135
}
133136
}
134137

138+
fn write_arg(ctxt: ctxt, arg: doc::argdoc) {
139+
ctxt.w.write_line(#fmt("* %s", arg.name));
140+
}
141+
142+
#[test]
143+
fn should_write_argument_list() {
144+
let source = "fn a(b: int, c: int) { }";
145+
let markdown = test::render(source);
146+
assert str::contains(
147+
markdown,
148+
"Arguments:\n\
149+
\n\
150+
* b\n\
151+
* c\n\
152+
\n"
153+
);
154+
}
155+
156+
#[test]
157+
fn should_not_write_arguments_if_none() {
158+
let source = "fn a() { } fn b() { }";
159+
let markdown = test::render(source);
160+
assert !str::contains(markdown, "Arguments");
161+
}
162+
135163
fn write_return(
136164
ctxt: ctxt,
137165
return: option<doc::retdoc>
@@ -157,13 +185,15 @@ fn write_return(
157185
}
158186

159187
#[cfg(test)]
160-
mod tests {
188+
mod test {
161189
fn render(source: str) -> str {
162190
let srv = astsrv::mk_srv_from_str(source);
163191
let doc = extract::from_srv(srv, "");
164192
let doc = attr_pass::mk_pass()(srv, doc);
165193
let doc = tystr_pass::mk_pass()(srv, doc);
166-
write_markdown_str(doc)
194+
let markdown = write_markdown_str(doc);
195+
#debug("markdown: %s", markdown);
196+
markdown
167197
}
168198

169199
fn write_markdown_str(

0 commit comments

Comments
 (0)