about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-03-16 12:20:29 -0700
committerBrian Anderson <banderson@mozilla.com>2012-03-16 12:20:29 -0700
commit0b0ecc662b08a8c05c7427fe80f3a2ec8a14f5af (patch)
tree286f0e92bce96804e9f2fe75918fabe10b5f94c4
parenta7132eeb1e8044f7d5e3ff8df87a861f0da12045 (diff)
downloadrust-0b0ecc662b08a8c05c7427fe80f3a2ec8a14f5af.tar.gz
rust-0b0ecc662b08a8c05c7427fe80f3a2ec8a14f5af.zip
rustdoc: Escape backslashes
-rw-r--r--src/rustdoc/escape_pass.rs18
-rw-r--r--src/rustdoc/rustdoc.rc3
-rwxr-xr-xsrc/rustdoc/rustdoc.rs1
3 files changed, 21 insertions, 1 deletions
diff --git a/src/rustdoc/escape_pass.rs b/src/rustdoc/escape_pass.rs
new file mode 100644
index 00000000000..c9dada9026f
--- /dev/null
+++ b/src/rustdoc/escape_pass.rs
@@ -0,0 +1,18 @@
+#[doc = "Escapes text sequences"];
+
+export mk_pass;
+
+fn mk_pass() -> pass {
+    text_pass::mk_pass("escape", escape)
+}
+
+fn escape(s: str) -> str {
+    str::replace(s, "\\", "\\\\")
+}
+
+#[test]
+fn should_escape_backslashes() {
+    let s = "\\n";
+    let r = escape(s);
+    assert r == "\\\\n";
+}
diff --git a/src/rustdoc/rustdoc.rc b/src/rustdoc/rustdoc.rc
index a4df1c7e8ea..111e813b211 100644
--- a/src/rustdoc/rustdoc.rc
+++ b/src/rustdoc/rustdoc.rc
@@ -38,4 +38,5 @@ mod sort_item_type_pass;
 mod reexport_pass;
 mod par;
 mod page_pass;
-mod sectionalize_pass;
\ No newline at end of file
+mod sectionalize_pass;
+mod escape_pass;
diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs
index 8c50b492053..ce24f9b1aee 100755
--- a/src/rustdoc/rustdoc.rs
+++ b/src/rustdoc/rustdoc.rs
@@ -143,6 +143,7 @@ fn run(config: config::config) {
             tystr_pass::mk_pass(),
             path_pass::mk_pass(),
             attr_pass::mk_pass(),
+            escape_pass::mk_pass(),
             prune_hidden_pass::mk_pass(),
             desc_to_brief_pass::mk_pass(),
             unindent_pass::mk_pass(),