Skip to content

Commit

Permalink
auto merge of rust-lang#6700 : ben0x539/rust/nestvariantdocs, r=thest…
Browse files Browse the repository at this point in the history
…inger

This indents all but the first line of multi-line annotations for individual enum variants with four spaces so that pandoc will recognize everything as belonging to the same list item.

Since that introduces `<p>` tags for some list items, I've gone ahead and inserted blank lines after each list item so that consistently get `<p>` tags for all `<li>`s documenting variants. It's a bit less compact now but still tolerable, I think.
  • Loading branch information
bors committed May 26, 2013
2 parents f254d11 + d89a6ce commit 1f8c4b0
Showing 1 changed file with 38 additions and 1 deletion.
39 changes: 38 additions & 1 deletion src/librustdoc/markdown_pass.rs
Original file line number Diff line number Diff line change
Expand Up @@ -451,16 +451,32 @@ fn write_variants(
fn write_variant(ctxt: &Ctxt, doc: doc::VariantDoc) {
assert!(doc.sig.is_some());
let sig = (&doc.sig).get();

// space out list items so they all end up within paragraph elements
ctxt.w.put_line(~"");

match copy doc.desc {
Some(desc) => {
ctxt.w.put_line(fmt!("* `%s` - %s", sig, desc));
ctxt.w.put_line(list_item_indent(fmt!("* `%s` - %s", sig, desc)));
}
None => {
ctxt.w.put_line(fmt!("* `%s`", sig));
}
}
}

fn list_item_indent(item: &str) -> ~str {
let mut indented = ~[];
for str::each_line_any(item) |line| {
indented.push(line);
}

// separate markdown elements within `*` lists must be indented by four
// spaces, or they will escape the list context. indenting everything
// seems fine though.
str::connect_slices(indented, "\n ")
}

fn write_trait(ctxt: &Ctxt, doc: doc::TraitDoc) {
write_common(ctxt, doc.desc(), doc.sections());
write_methods(ctxt, doc.methods);
Expand Down Expand Up @@ -807,7 +823,9 @@ mod test {
assert!(str::contains(
markdown,
"\n\n#### Variants\n\
\n\
\n* `b` - test\
\n\
\n* `c` - test\n\n"));
}

Expand All @@ -817,7 +835,24 @@ mod test {
assert!(str::contains(
markdown,
"\n\n#### Variants\n\
\n\
\n* `b`\
\n\
\n* `c`\n\n"));
}

#[test]
fn should_write_variant_list_with_indent() {
let markdown = render(
~"enum a { #[doc = \"line 1\\n\\nline 2\"] b, c }");
assert!(str::contains(
markdown,
"\n\n#### Variants\n\
\n\
\n* `b` - line 1\
\n \
\n line 2\
\n\
\n* `c`\n\n"));
}

Expand All @@ -827,7 +862,9 @@ mod test {
assert!(str::contains(
markdown,
"\n\n#### Variants\n\
\n\
\n* `b(int)`\
\n\
\n* `c(int)` - a\n\n"));
}

Expand Down

0 comments on commit 1f8c4b0

Please sign in to comment.