use std::borrow::Cow;
use std::collections::HashMap;
use std::fmt;
use crate::nodes::Sourcepos;
pub trait SyntaxHighlighterAdapter: Send + Sync {
fn write_highlighted(
&self,
output: &mut dyn fmt::Write,
lang: Option<&str>,
code: &str,
) -> fmt::Result;
fn write_pre_tag<'s>(
&self,
output: &mut dyn fmt::Write,
attributes: HashMap<&'static str, Cow<'s, str>>,
) -> fmt::Result;
fn write_code_tag<'s>(
&self,
output: &mut dyn fmt::Write,
attributes: HashMap<&'static str, Cow<'s, str>>,
) -> fmt::Result;
}
#[derive(Clone, Debug)]
pub struct HeadingMeta {
pub level: u8,
pub content: String,
}
pub trait HeadingAdapter: Send + Sync {
fn enter(
&self,
output: &mut dyn fmt::Write,
heading: &HeadingMeta,
sourcepos: Option<Sourcepos>,
) -> fmt::Result;
fn exit(&self, output: &mut dyn fmt::Write, heading: &HeadingMeta) -> fmt::Result;
}