Skip to content

Commit 094f91b

Browse files
committed
rustdoc: Write markdown for resources
1 parent ca0aefa commit 094f91b

File tree

1 file changed

+57
-27
lines changed

1 file changed

+57
-27
lines changed

src/rustdoc/markdown_pass.rs

Lines changed: 57 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ fn write_mod_contents(
9393
write_fn(ctxt, fndoc);
9494
}
9595

96+
for resdoc in *doc.resources {
97+
write_res(ctxt, resdoc);
98+
}
99+
96100
for moddoc in *doc.mods {
97101
write_mod(ctxt, moddoc);
98102
}
@@ -139,6 +143,12 @@ fn code_block_indent(s: str) -> str {
139143
str::connect(indented, "\n")
140144
}
141145

146+
#[test]
147+
fn write_markdown_should_write_function_header() {
148+
let markdown = test::render("fn func() { }");
149+
assert str::contains(markdown, "### Function `func`");
150+
}
151+
142152
#[test]
143153
fn should_write_the_function_signature() {
144154
let markdown = test::render("#[doc = \"f\"] fn a() { }");
@@ -168,6 +178,12 @@ fn should_correctly_indent_fn_signature() {
168178
assert str::contains(markdown, " line 1\n line 2");
169179
}
170180

181+
#[test]
182+
fn should_leave_blank_line_between_fn_header_and_sig() {
183+
let markdown = test::render("#[doc(brief = \"brief\")] fn a() { }");
184+
assert str::contains(markdown, "Function `a`\n\n fn a()");
185+
}
186+
171187
fn write_brief(
172188
ctxt: ctxt,
173189
brief: option<str>
@@ -181,6 +197,20 @@ fn write_brief(
181197
}
182198
}
183199

200+
#[test]
201+
fn should_leave_blank_line_after_brief() {
202+
let markdown = test::render("#[doc(brief = \"brief\")] fn a() { }");
203+
assert str::contains(markdown, "brief\n\n");
204+
}
205+
206+
#[test]
207+
fn should_leave_blank_line_between_brief_and_desc() {
208+
let markdown = test::render(
209+
"#[doc(brief = \"brief\", desc = \"desc\")] fn a() { }"
210+
);
211+
assert str::contains(markdown, "brief\n\ndesc");
212+
}
213+
184214
fn write_desc(
185215
ctxt: ctxt,
186216
desc: option<str>
@@ -437,6 +467,33 @@ fn should_write_variant_list_with_signatures() {
437467
\n* `c(int)` - a\n\n");
438468
}
439469

470+
fn write_res(ctxt: ctxt, doc: doc::resdoc) {
471+
write_header(ctxt, h3, #fmt("Resource `%s`", doc.name));
472+
write_sig(ctxt, doc.sig);
473+
write_brief(ctxt, doc.brief);
474+
write_desc(ctxt, doc.desc);
475+
write_args(ctxt, doc.args);
476+
}
477+
478+
#[test]
479+
fn should_write_resource_header() {
480+
let markdown = test::render("resource r(a: bool) { }");
481+
assert str::contains(markdown, "### Resource `r`");
482+
}
483+
484+
#[test]
485+
fn should_write_resource_signature() {
486+
let markdown = test::render("resource r(a: bool) { }");
487+
assert str::contains(markdown, "\n resource r(a: bool)\n");
488+
}
489+
490+
#[test]
491+
fn should_write_resource_args() {
492+
let markdown = test::render("#[doc(args(a = \"b\"))]\
493+
resource r(a: bool) { }");
494+
assert str::contains(markdown, "Arguments:\n\n* `a`: `bool` - b");
495+
}
496+
440497
#[cfg(test)]
441498
mod test {
442499
fn render(source: str) -> str {
@@ -477,12 +534,6 @@ mod test {
477534
assert str::contains(markdown, "# Crate belch");
478535
}
479536

480-
#[test]
481-
fn write_markdown_should_write_function_header() {
482-
let markdown = render("fn func() { }");
483-
assert str::contains(markdown, "### Function `func`");
484-
}
485-
486537
#[test]
487538
fn write_markdown_should_write_mod_headers() {
488539
let markdown = render("mod moo { }");
@@ -494,25 +545,4 @@ mod test {
494545
let markdown = render("mod morp { }");
495546
assert str::contains(markdown, "Module `morp`\n\n");
496547
}
497-
498-
#[test]
499-
fn should_leave_blank_line_between_fn_header_and_sig() {
500-
let markdown = render("#[doc(brief = \"brief\")] fn a() { }");
501-
assert str::contains(markdown, "Function `a`\n\n fn a()");
502-
}
503-
504-
#[test]
505-
fn should_leave_blank_line_after_brief() {
506-
let markdown = render("#[doc(brief = \"brief\")] fn a() { }");
507-
assert str::contains(markdown, "brief\n\n");
508-
}
509-
510-
#[test]
511-
fn should_leave_blank_line_between_brief_and_desc() {
512-
let markdown = render(
513-
"#[doc(brief = \"brief\", desc = \"desc\")] fn a() { }"
514-
);
515-
assert str::contains(markdown, "brief\n\ndesc");
516-
}
517-
518548
}

0 commit comments

Comments
 (0)