You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
use crate::settings::format_settings::Theme;
|
|
|
|
use std::io;
|
|
|
|
use std::io::Write;
|
|
|
|
|
|
|
|
pub struct HTMLWriter {
|
|
|
|
inner: Box<dyn Write>,
|
|
|
|
theme: Theme,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl HTMLWriter {
|
|
|
|
/// Creates a new writer
|
|
|
|
pub fn new(inner: Box<dyn Write>, theme: Theme) -> Self {
|
|
|
|
Self { inner, theme }
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Writes a raw string
|
|
|
|
pub fn write(&mut self, html: String) -> io::Result<()> {
|
|
|
|
self.inner.write_all(html.as_bytes())
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Writes an escaped string
|
|
|
|
pub fn write_escaped(&mut self, html: String) -> io::Result<()> {
|
|
|
|
self.write(htmlescape::encode_minimal(html.as_str()))
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Writes an escaped attribute
|
|
|
|
pub fn write_attribute(&mut self, attribute_value: String) -> io::Result<()> {
|
|
|
|
self.write(htmlescape::encode_attribute(attribute_value.as_str()))
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Flushes the writer
|
|
|
|
pub fn flush(&mut self) -> io::Result<()> {
|
|
|
|
self.inner.flush()
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Return the theme of the html writer
|
|
|
|
pub fn get_theme(&mut self) -> Theme {
|
|
|
|
self.theme.clone()
|
|
|
|
}
|
|
|
|
}
|