use std::fmt::{Display, Formatter, Write};
pub struct HtmlEscapedText<'a>(&'a str);
impl<'a> HtmlEscapedText<'a> {
pub fn new(text: &'a str) -> Self {
Self(text)
}
}
impl<'a> Display for HtmlEscapedText<'a> {
fn fmt(&self, formatter: &mut Formatter<'_>) -> std::fmt::Result {
for c in self.0.chars() {
if c == '&' {
formatter.write_str("&")?;
} else if c == '<' {
formatter.write_str("<")?;
} else if c == '>' {
formatter.write_str(">")?;
} else if c == '"' {
formatter.write_str(""")?;
} else if c == '\'' {
formatter.write_str("'")?;
} else {
formatter.write_char(c)?;
}
}
Ok(())
}
}