use crate::events::HighlightEvent;
use std::io::{self, Write};
pub mod ansi;
pub mod html;
pub mod html_inline;
pub use html_inline::{HtmlInline, HtmlInlineBuilder};
pub mod html_multi_themes;
pub use html_multi_themes::{HtmlMultiThemes, HtmlMultiThemesBuilder};
pub mod html_linked;
pub use html_linked::{HtmlLinked, HtmlLinkedBuilder};
pub mod terminal;
pub use terminal::{Background as TerminalBackground, Terminal, TerminalBuilder};
pub mod bbcode;
pub use bbcode::{BBCodeScoped, BBCodeScopedBuilder};
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct HtmlElement {
pub open_tag: String,
pub close_tag: String,
}
pub trait Formatter: Send + Sync {
fn render(
&self,
source: &str,
events: &[HighlightEvent],
output: &mut dyn Write,
) -> io::Result<()>;
}
impl Formatter for Box<dyn Formatter> {
fn render(
&self,
source: &str,
events: &[HighlightEvent],
output: &mut dyn Write,
) -> io::Result<()> {
(**self).render(source, events, output)
}
}