about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-03-06 20:16:53 -0800
committerBrian Anderson <banderson@mozilla.com>2012-03-06 20:16:53 -0800
commite536e8a93354cd2b4e5ecc87eb0fdf30b835859c (patch)
treee107ba6c7641b7b406d384a3a0958f97a3e488e0 /src
parentae5ea85c361e2b383b01c1101d731843795ea0cb (diff)
downloadrust-e536e8a93354cd2b4e5ecc87eb0fdf30b835859c.tar.gz
rust-e536e8a93354cd2b4e5ecc87eb0fdf30b835859c.zip
rustdoc: Don't escape characters between backticks
Diffstat (limited to 'src')
-rw-r--r--src/rustdoc/html_escape_pass.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/rustdoc/html_escape_pass.rs b/src/rustdoc/html_escape_pass.rs
index b3c1c5d5fc8..f1a32d5a019 100644
--- a/src/rustdoc/html_escape_pass.rs
+++ b/src/rustdoc/html_escape_pass.rs
@@ -7,6 +7,20 @@ fn mk_pass() -> pass {
 }
 
 fn escape(s: str) -> str {
+    let parts = str::split_char(s, '`');
+    let i = 0;
+    let parts = vec::map(parts) {|part|
+        i += 1;
+        if i % 2 != 0 {
+            escape_(part)
+        } else {
+            part
+        }
+    };
+    ret str::connect(parts, "`");
+}
+
+fn escape_(s: str) -> str {
     let s = str::replace(s, "&", "&amp;");
     let s = str::replace(s, "<", "&lt;");
     let s = str::replace(s, ">", "&gt;");
@@ -22,3 +36,9 @@ fn test() {
     assert escape("\"") == "&quot;";
     assert escape("<>&\"") == "&lt;&gt;&amp;&quot;";
 }
+
+#[test]
+fn should_not_escape_characters_in_backticks() {
+    // Markdown will quote things in backticks itself
+    assert escape("<`<`<`<`<") == "&lt;`<`&lt;`<`&lt;";
+}