#[derive(Debug, Clone, PartialEq)]
pub enum Block {
Heading { level: u8, content: Vec<Inline> },
Paragraph(Vec<Inline>),
List(List),
Table(Table),
Code { lang: Option<String>, text: String },
Quote(Vec<Block>),
Math(String),
Divider,
Details {
summary: Vec<Inline>,
blocks: Vec<Block>,
open: bool,
},
}
#[derive(Debug, Clone, PartialEq)]
pub struct List {
pub ordered: bool,
pub items: Vec<ListItem>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ListItem {
pub task: Option<bool>,
pub content: Vec<Inline>,
pub children: Vec<Block>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Align {
None,
Left,
Center,
Right,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Table {
pub align: Vec<Align>,
pub header: Vec<Vec<Inline>>,
pub rows: Vec<Vec<Vec<Inline>>>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum Inline {
Text(String),
Bold(Vec<Inline>),
Italic(Vec<Inline>),
Strike(Vec<Inline>),
Code(String),
Math(String),
Link {
content: Vec<Inline>,
url: String,
},
}