use compact_str::CompactString;
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Block {
Document {
children: Vec<Block>,
},
BlockQuote {
children: Vec<Block>,
},
List {
kind: ListKind,
start: u32,
tight: bool,
children: Vec<Block>,
},
ListItem {
children: Vec<Block>,
checked: Option<bool>,
},
Paragraph {
raw: String,
},
Heading {
level: u8,
raw: String,
},
CodeBlock {
info: CompactString,
literal: String,
},
HtmlBlock {
literal: String,
},
ThematicBreak,
Table(Box<TableData>),
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TableData {
pub alignments: Vec<TableAlignment>,
pub num_cols: usize,
pub header: Vec<CompactString>, pub rows: Vec<CompactString>, }
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ListKind {
Bullet(u8), Ordered(u8), }
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TableAlignment {
None,
Left,
Center,
Right,
}