fml 0.1.0

Friendly Markup Language
use crate::ast::{FmlColor, FmlFunction, FmlValue};

type Tokens = Vec<Token>;

pub struct TokenVec(pub Vec<Token>);

/// Tokens meant to be used during lexing of content
#[derive(Debug, PartialEq, Clone)]
pub enum Token {
	Newline,
	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(FmlFunction),

	Typst(String),
	Text(String),
}

// #[derive(Debug, PartialEq)]
// pub enum LineToken {
// 	Heading1(&'a str),
// 	Heading2(&'a str),
// 	Heading3(&'a str),
// 	SupLine(&'a str),
// 	SubLine(&'a str),
// }

// #[derive(Debug, PartialEq)]
// pub enum LineNestableToken {
// 	ListItem(&'a str),
// 	Quote(String),
// }