#[inline]
pub fn sanitize(content: String) -> String {
content
.chars()
.fold(String::with_capacity(content.len()), |mut acc, c| {
acc + match c {
'&' => "&",
'<' => "<",
'>' => ">",
'"' => """,
'\'' => "'",
_ => {
static mut BUFFER: [u8; 4] = [0; 4];
if c.is_ascii() {
let byte = c as u8;
unsafe {
std::str::from_utf8_unchecked(std::slice::from_raw_parts(
&byte as *const u8,
1,
))
}
} else {
unsafe {
let len = c.encode_utf8(&mut BUFFER).len();
std::str::from_utf8_unchecked(std::slice::from_raw_parts(
BUFFER.as_ptr(),
len,
))
}
}
}
}
})
}