use crate::settings::style_settings::Theme;
use std::io;
use std::io::Write;
pub struct HTMLWriter {
inner: Box<dyn Write>,
theme: Theme,
}
impl HTMLWriter {
pub fn new(inner: Box<dyn Write>, theme: Theme) -> Self {
Self { inner, theme }
}
pub fn write(&mut self, html: String) -> io::Result<()> {
self.inner.write_all(html.as_bytes())
}
pub fn write_escaped(&mut self, html: String) -> io::Result<()> {
self.write(htmlescape::encode_minimal(html.as_str()))
}
pub fn write_attribute(&mut self, attribute_value: String) -> io::Result<()> {
self.write(htmlescape::encode_attribute(attribute_value.as_str()))
}
pub fn flush(&mut self) -> io::Result<()> {
self.inner.flush()
}
pub fn get_theme(&mut self) -> Theme {
self.theme.clone()
}
}