use derive_deref::{Deref, DerefMut};
use std::io::{self, ErrorKind::Unsupported};
#[derive(Deref, DerefMut, Default, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct Content(pub Vec<Section>);
#[derive(Deref, DerefMut, Default, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct Section(pub FmlValues);
#[derive(Deref, DerefMut, Default, Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct FmlValues(pub Vec<FmlValue>);
#[derive(Deref, DerefMut, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct ListItem(pub FmlValues);
#[derive(Deref, DerefMut, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct FmlList(pub Vec<ListItem>);
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub enum FmlValue {
Linebreak,
Heading1(FmlValues),
Heading2(FmlValues),
Heading3(FmlValues),
Superline(FmlValues),
Subline(FmlValues),
Bold(FmlValues),
Italic(FmlValues),
Strikethrough(FmlValues),
Quote(FmlValues),
List(FmlList),
Superscript(FmlValues),
Subscript(FmlValues),
Underline(FmlValues),
ColorFg(FmlColor),
ColorBg(FmlColor),
ContentWarning {
reason: String,
body: FmlValues,
},
CodeBlock {
lang: Option<String>,
body: String,
},
Hyperlink {
fml: FmlValues,
uri: String,
},
CodeInline(String),
Typst(String),
Text(String),
}
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub enum FmlCodeBlockValue {
Str(String),
Linebreak,
}
#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Clone, Hash)]
pub struct FmlColor {
pub color: String,
pub body: FmlValues,
}