package token

TokenType :: enum {
	Text,
	Italics,
	Bold,
	BreakLine,
	Header,
	Paragraph,
	Root,
	Blockquote,
	UnorderedList,
	OrderedList,
	ListItem,
	Strikethrough,
	Table,
	TableRow,
	TableHeaderRow,
	TableCell,
	TableSeparator,
	Left,
	Right,
	Middle,
	FootnoteDef,
	FootnoteRef,
	CodeBlock,
	InlineCode,
	HorizontalRule,
	Underline,
	Superscript,
	Subscript,
	HeaderLink,
	Link,
	Image,
	Audio,
	Video,
	Iframe,
	Script,
	ScriptBlock,
	Variable,
	VariableDef,
}

TokenValue :: union {
	string,
	int,
}

Token :: struct {
	type:     TokenType,
	value:    TokenValue,
	children: [dynamic]^Token,
	parent:   ^Token,
}
