use crate::ast::{FmlCodeBlockValue, FmlColor, FmlFunction, FmlValue};
type Tokens = Vec<Token>;
pub struct TokenVec(pub Vec<Token>);
#[derive(Debug, PartialEq, Clone)]
pub enum Token {
Linebreak,
CodeInline(String),
CodeBlock {
lang: Option<String>,
body: Vec<FmlCodeBlockValue>,
},
Hyperlink {
fml: Tokens,
uri: String,
},
Heading1(Tokens),
Heading2(Tokens),
Heading3(Tokens),
SupLine(Tokens),
SubLine(Tokens),
ListItem(Tokens),
Quote(String),
CwSpoiler(Tokens),
Bold(Tokens),
Italic(Tokens),
Strikethrough(Tokens),
Underline(Tokens),
Superscript(Tokens),
Subscript(Tokens),
Function(FunctionToken),
Typst(String),
Text(String),
}
#[derive(Debug, PartialEq, Clone)]
pub struct FunctionToken {
pub name: String,
pub params: Option<String>,
pub body: Tokens,
}