Skip to content

Commit cf8f5b7

Browse files
committed
rustdoc: Escape HTML special characters
1 parent 29ac3c8 commit cf8f5b7

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

src/rustdoc/html_escape_pass.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#[doc = "Escapes characters that are not valid in HTML"];
2+
3+
export mk_pass;
4+
5+
fn mk_pass() -> pass {
6+
desc_pass::mk_pass("html_escape", escape)
7+
}
8+
9+
fn escape(s: str) -> str {
10+
let s = str::replace(s, "&", "&");
11+
let s = str::replace(s, "<", "&lt;");
12+
let s = str::replace(s, ">", "&gt;");
13+
let s = str::replace(s, "\"", "&quot;");
14+
ret s;
15+
}
16+
17+
#[test]
18+
fn test() {
19+
assert escape("<") == "&lt;";
20+
assert escape(">") == "&gt;";
21+
assert escape("&") == "&amp;";
22+
assert escape("\"") == "&quot;";
23+
assert escape("<>&\"") == "&lt;&gt;&amp;&quot;";
24+
}

src/rustdoc/rustdoc.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ mod sort_item_type_pass;
3939
mod reexport_pass;
4040
mod par;
4141
mod page_pass;
42+
mod html_escape_pass;

src/rustdoc/rustdoc.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ fn run(config: config::config) {
149149
desc_to_brief_pass::mk_pass(),
150150
trim_pass::mk_pass(),
151151
unindent_pass::mk_pass(),
152+
html_escape_pass::mk_pass(),
152153
sort_item_name_pass::mk_pass(),
153154
sort_item_type_pass::mk_pass(),
154155
markdown_index_pass::mk_pass(config),

0 commit comments

Comments
 (0)