about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2013-12-29 10:54:56 +1100
committerHuon Wilson <dbau.pp+github@gmail.com>2013-12-30 16:55:49 +1100
commit582ad8ffc28429714b84d2dd8f01c780afb00b15 (patch)
tree1d5003b30950178e1f2ee31e7972b5cd0e4d4114
parent9477c49a7b4eec2c2a3e0d9a28c4129e3d1fa6ec (diff)
downloadrust-582ad8ffc28429714b84d2dd8f01c780afb00b15.tar.gz
rust-582ad8ffc28429714b84d2dd8f01c780afb00b15.zip
rustdoc: only filter lines starting with '# ' from the shown code.
Currently any line starting with `#` is filtered from the output,
including line like `#[deriving]`; this patch makes it so lines are only
filtered when followed by a space similar to the current behaviour of
the tutorial/manual tester.
-rw-r--r--doc/rustdoc.md7
-rw-r--r--src/librustdoc/html/markdown.rs6
-rw-r--r--src/librustdoc/test.rs1
-rw-r--r--src/test/run-make/rustdoc-hidden-line/Makefile7
-rw-r--r--src/test/run-make/rustdoc-hidden-line/foo.rs22
-rwxr-xr-xsrc/test/run-make/rustdoc-hidden-line/verify.sh8
6 files changed, 46 insertions, 5 deletions
diff --git a/doc/rustdoc.md b/doc/rustdoc.md
index 39fc03bca0d..16bcf8d6dd8 100644
--- a/doc/rustdoc.md
+++ b/doc/rustdoc.md
@@ -132,9 +132,10 @@ specifiers that can be used to dictate how a code block is tested:
 ~~~
 
 Rustdoc also supplies some extra sugar for helping with some tedious
-documentation examples. If a line is prefixed with a `#` character, then the
-line will not show up in the HTML documentation, but it will be used when
-testing the code block.
+documentation examples. If a line is prefixed with `# `, then the line
+will not show up in the HTML documentation, but it will be used when
+testing the code block (NB. the space after the `#` is required, so
+that one can still write things like `#[deriving(Eq)]`).
 
 ~~~
 ```rust
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index 6fd83af3b2e..f445e11aa02 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -101,7 +101,7 @@ pub fn render(w: &mut io::Writer, s: &str) {
             vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
                 let text = str::from_utf8(text);
                 let mut lines = text.lines().filter(|l| {
-                    !l.trim().starts_with("#")
+                    !l.trim().starts_with("# ")
                 });
                 let text = lines.to_owned_vec().connect("\n");
 
@@ -169,7 +169,9 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) {
             vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| {
                 let tests: &mut ::test::Collector = intrinsics::transmute(opaque);
                 let text = str::from_utf8(text);
-                let mut lines = text.lines().map(|l| l.trim_chars(&'#'));
+                let mut lines = text.lines().map(|l| {
+                            if l.starts_with("# ") {l.slice_from(2)} else {l}
+                        });
                 let text = lines.to_owned_vec().connect("\n");
                 tests.add_test(text, ignore, shouldfail);
             })
diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs
index 9462f8118ba..60e46439910 100644
--- a/src/librustdoc/test.rs
+++ b/src/librustdoc/test.rs
@@ -171,6 +171,7 @@ impl Collector {
         self.cnt += 1;
         let libs = (*self.libs).clone();
         let cratename = self.cratename.to_owned();
+        debug!("Creating test {}: {}", name, test);
         self.tests.push(test::TestDescAndFn {
             desc: test::TestDesc {
                 name: test::DynTestName(name),
diff --git a/src/test/run-make/rustdoc-hidden-line/Makefile b/src/test/run-make/rustdoc-hidden-line/Makefile
new file mode 100644
index 00000000000..7e6f8fe105e
--- /dev/null
+++ b/src/test/run-make/rustdoc-hidden-line/Makefile
@@ -0,0 +1,7 @@
+-include ../tools.mk
+
+all:
+	$(RUSTDOC) --test foo.rs
+	$(RUSTDOC) -w html -o $(TMPDIR)/doc foo.rs
+	cp verify.sh $(TMPDIR)
+	$(call RUN,verify.sh) $(TMPDIR)
diff --git a/src/test/run-make/rustdoc-hidden-line/foo.rs b/src/test/run-make/rustdoc-hidden-line/foo.rs
new file mode 100644
index 00000000000..69c7683780b
--- /dev/null
+++ b/src/test/run-make/rustdoc-hidden-line/foo.rs
@@ -0,0 +1,22 @@
+#[crate_id="foo#0.1"];
+
+/// The '# ' lines should be removed from the output, but the #[deriving] should be
+/// retained.
+///
+/// ```rust
+/// mod to_make_deriving_work { // FIXME #4913
+///
+/// # #[deriving(Eq)] // invisible
+/// # struct Foo; // invisible
+///
+/// #[deriving(Eq)] // Bar
+/// struct Bar(Foo);
+///
+/// fn test() {
+///     let x = Bar(Foo);
+///     assert!(x == x); // check that the derivings worked
+/// }
+///
+/// }
+/// ```
+pub fn foo() {}
diff --git a/src/test/run-make/rustdoc-hidden-line/verify.sh b/src/test/run-make/rustdoc-hidden-line/verify.sh
new file mode 100755
index 00000000000..c1d817c998d
--- /dev/null
+++ b/src/test/run-make/rustdoc-hidden-line/verify.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+file="$1/doc/foo/fn.foo.html"
+
+grep -v 'invisible' $file &&
+grep '#\[deriving(Eq)\] // Bar' $file
+
+exit $?