summary refs log tree commit diff
path: root/src/rustdoc
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-18 15:02:23 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-18 15:02:43 -0800
commit1b839a61c4ac44cd98195da424db00fa7d011b6a (patch)
treee0fb56bc3211d61d536345fc95c0f1e1ab450a67 /src/rustdoc
parent29df58d73babbc6bf5af285162ea03170b8ff9ab (diff)
downloadrust-1b839a61c4ac44cd98195da424db00fa7d011b6a.tar.gz
rust-1b839a61c4ac44cd98195da424db00fa7d011b6a.zip
rustdoc: Write markdown for fn arguments
Diffstat (limited to 'src/rustdoc')
-rw-r--r--src/rustdoc/gen.rs38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/rustdoc/gen.rs b/src/rustdoc/gen.rs
index ee555962e29..ce5ed876b52 100644
--- a/src/rustdoc/gen.rs
+++ b/src/rustdoc/gen.rs
@@ -127,11 +127,39 @@ fn write_args(
     ctxt: ctxt,
     args: [doc::argdoc]
 ) {
-    for arg in args {
-        ctxt.w.write_str("### Argument `" + arg.name + "`: ");
+    if vec::is_not_empty(args) {
+        ctxt.w.write_line("Arguments:");
+        ctxt.w.write_line("");
+        vec::iter(args) {|arg| write_arg(ctxt, arg) };
+        ctxt.w.write_line("");
     }
 }
 
+fn write_arg(ctxt: ctxt, arg: doc::argdoc) {
+    ctxt.w.write_line(#fmt("* %s", arg.name));
+}
+
+#[test]
+fn should_write_argument_list() {
+    let source = "fn a(b: int, c: int) { }";
+    let markdown = test::render(source);
+    assert str::contains(
+        markdown,
+        "Arguments:\n\
+         \n\
+         * b\n\
+         * c\n\
+         \n"
+    );
+}
+
+#[test]
+fn should_not_write_arguments_if_none() {
+    let source = "fn a() { } fn b() { }";
+    let markdown = test::render(source);
+    assert !str::contains(markdown, "Arguments");
+}
+
 fn write_return(
     ctxt: ctxt,
     return: option<doc::retdoc>
@@ -157,13 +185,15 @@ fn write_return(
 }
 
 #[cfg(test)]
-mod tests {
+mod test {
     fn render(source: str) -> str {
         let srv = astsrv::mk_srv_from_str(source);
         let doc = extract::from_srv(srv, "");
         let doc = attr_pass::mk_pass()(srv, doc);
         let doc = tystr_pass::mk_pass()(srv, doc);
-        write_markdown_str(doc)
+        let markdown = write_markdown_str(doc);
+        #debug("markdown: %s", markdown);
+        markdown
     }
 
     fn write_markdown_str(