1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//! Escape function trait and default functions.
//!
//! The default is to escape for HTML content using `escape_html`.
/// Type for escape functions.
pub type EscapeFn = Box<dyn Fn(&str) -> String + Send + Sync>;
/// Escape for HTML output.
pub fn html(s: &str) -> String {
let mut output = String::new();
for c in s.chars() {
match c {
'<' => output.push_str("<"),
'>' => output.push_str(">"),
'"' => output.push_str("""),
'&' => output.push_str("&"),
'\'' => output.push_str("'"),
_ => output.push(c),
}
}
output
}
/// Do not escape output.
pub fn noop(s: &str) -> String {
s.to_owned()
}