pub fn html_escape(text: &str) -> String {
let mut output = String::new();
for c in text.chars() {
match c {
'&' => output.push_str("&"),
'<' => output.push_str("<"),
'>' => output.push_str(">"),
'"' => output.push_str("""),
'\'' => output.push_str("'"),
_ => output.push(c),
}
}
output
}
#[cfg(test)]
mod tests {
use super::html_escape;
#[test]
fn eval_html_escape() {
let tests = [
("foo", "foo"),
("<tag>", "<tag>"),
("foo & bar", "foo & bar"),
(
"string with double quote: \"baz\"",
"string with double quote: "baz"",
),
];
for (input, output) in tests.iter() {
assert_eq!(html_escape(input), output.to_string());
}
}
}