diff options
| -rw-r--r-- | src/rustdoc/html_escape_pass.rs | 20 |
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, "&", "&"); let s = str::replace(s, "<", "<"); let s = str::replace(s, ">", ">"); @@ -22,3 +36,9 @@ fn test() { assert escape("\"") == """; assert escape("<>&\"") == "<>&""; } + +#[test] +fn should_not_escape_characters_in_backticks() { + // Markdown will quote things in backticks itself + assert escape("<`<`<`<`<") == "<`<`<`<`<"; +} |
