use oak_core::{ElementType, UniversalElementRole};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u16)]
pub enum MarkdownElementType {
Root,
Paragraph,
Table,
Heading1,
Heading2,
Heading3,
Heading4,
Heading5,
Heading6,
Blockquote,
CodeBlock,
List,
ListItem,
HorizontalRule,
MathBlock,
FrontMatter,
FootnoteDefinition,
Text,
Whitespace,
Newline,
HeadingText,
Emphasis,
Strong,
Strikethrough,
InlineCode,
CodeFence,
CodeLanguage,
Link,
LinkText,
LinkUrl,
LinkTitle,
Image,
ImageAlt,
ImageUrl,
ImageTitle,
UnorderedList,
OrderedList,
ListMarker,
TaskList,
TaskMarker,
BlockquoteMarker,
TableRow,
TableCell,
TableHeader,
TableSeparator,
TableAlignment,
MathInline,
FootnoteReference,
DefinitionList,
DefinitionTerm,
DefinitionDescription,
Superscript,
Subscript,
Abbreviation,
HtmlTag,
HtmlComment,
XmlTag,
XmlComment,
AutoLink,
Error,
}
impl ElementType for MarkdownElementType {
type Role = UniversalElementRole;
fn role(&self) -> Self::Role {
match self {
_ => UniversalElementRole::None,
}
}
}
impl From<crate::lexer::token_type::MarkdownTokenType> for MarkdownElementType {
fn from(token: crate::lexer::token_type::MarkdownTokenType) -> Self {
match token {
crate::lexer::token_type::MarkdownTokenType::Text => MarkdownElementType::Text,
crate::lexer::token_type::MarkdownTokenType::Whitespace => MarkdownElementType::Whitespace,
crate::lexer::token_type::MarkdownTokenType::Newline => MarkdownElementType::Newline,
crate::lexer::token_type::MarkdownTokenType::Heading1 => MarkdownElementType::Heading1,
crate::lexer::token_type::MarkdownTokenType::Heading2 => MarkdownElementType::Heading2,
crate::lexer::token_type::MarkdownTokenType::Heading3 => MarkdownElementType::Heading3,
crate::lexer::token_type::MarkdownTokenType::Heading4 => MarkdownElementType::Heading4,
crate::lexer::token_type::MarkdownTokenType::Heading5 => MarkdownElementType::Heading5,
crate::lexer::token_type::MarkdownTokenType::Heading6 => MarkdownElementType::Heading6,
crate::lexer::token_type::MarkdownTokenType::HeadingText => MarkdownElementType::HeadingText,
crate::lexer::token_type::MarkdownTokenType::Emphasis => MarkdownElementType::Emphasis,
crate::lexer::token_type::MarkdownTokenType::Strong => MarkdownElementType::Strong,
crate::lexer::token_type::MarkdownTokenType::Strikethrough => MarkdownElementType::Strikethrough,
crate::lexer::token_type::MarkdownTokenType::InlineCode => MarkdownElementType::InlineCode,
crate::lexer::token_type::MarkdownTokenType::CodeBlock => MarkdownElementType::CodeBlock,
crate::lexer::token_type::MarkdownTokenType::CodeFence => MarkdownElementType::CodeFence,
crate::lexer::token_type::MarkdownTokenType::CodeLanguage => MarkdownElementType::CodeLanguage,
crate::lexer::token_type::MarkdownTokenType::Link => MarkdownElementType::Link,
crate::lexer::token_type::MarkdownTokenType::LinkText => MarkdownElementType::LinkText,
crate::lexer::token_type::MarkdownTokenType::LinkUrl => MarkdownElementType::LinkUrl,
crate::lexer::token_type::MarkdownTokenType::LinkTitle => MarkdownElementType::LinkTitle,
crate::lexer::token_type::MarkdownTokenType::Image => MarkdownElementType::Image,
crate::lexer::token_type::MarkdownTokenType::ImageAlt => MarkdownElementType::ImageAlt,
crate::lexer::token_type::MarkdownTokenType::ImageUrl => MarkdownElementType::ImageUrl,
crate::lexer::token_type::MarkdownTokenType::ImageTitle => MarkdownElementType::ImageTitle,
crate::lexer::token_type::MarkdownTokenType::UnorderedList => MarkdownElementType::UnorderedList,
crate::lexer::token_type::MarkdownTokenType::OrderedList => MarkdownElementType::OrderedList,
crate::lexer::token_type::MarkdownTokenType::ListItem => MarkdownElementType::ListItem,
crate::lexer::token_type::MarkdownTokenType::ListMarker => MarkdownElementType::ListMarker,
crate::lexer::token_type::MarkdownTokenType::TaskList => MarkdownElementType::TaskList,
crate::lexer::token_type::MarkdownTokenType::TaskMarker => MarkdownElementType::TaskMarker,
crate::lexer::token_type::MarkdownTokenType::Blockquote => MarkdownElementType::Blockquote,
crate::lexer::token_type::MarkdownTokenType::BlockquoteMarker => MarkdownElementType::BlockquoteMarker,
crate::lexer::token_type::MarkdownTokenType::HorizontalRule => MarkdownElementType::HorizontalRule,
crate::lexer::token_type::MarkdownTokenType::Table => MarkdownElementType::Table,
crate::lexer::token_type::MarkdownTokenType::TableRow => MarkdownElementType::TableRow,
crate::lexer::token_type::MarkdownTokenType::TableCell => MarkdownElementType::TableCell,
crate::lexer::token_type::MarkdownTokenType::TableHeader => MarkdownElementType::TableHeader,
crate::lexer::token_type::MarkdownTokenType::TableSeparator => MarkdownElementType::TableSeparator,
crate::lexer::token_type::MarkdownTokenType::TableAlignment => MarkdownElementType::TableAlignment,
crate::lexer::token_type::MarkdownTokenType::MathInline => MarkdownElementType::MathInline,
crate::lexer::token_type::MarkdownTokenType::MathBlock => MarkdownElementType::MathBlock,
crate::lexer::token_type::MarkdownTokenType::FootnoteDefinition => MarkdownElementType::FootnoteDefinition,
crate::lexer::token_type::MarkdownTokenType::FootnoteReference => MarkdownElementType::FootnoteReference,
crate::lexer::token_type::MarkdownTokenType::FrontMatter => MarkdownElementType::FrontMatter,
crate::lexer::token_type::MarkdownTokenType::DefinitionList => MarkdownElementType::DefinitionList,
crate::lexer::token_type::MarkdownTokenType::DefinitionTerm => MarkdownElementType::DefinitionTerm,
crate::lexer::token_type::MarkdownTokenType::DefinitionDescription => MarkdownElementType::DefinitionDescription,
crate::lexer::token_type::MarkdownTokenType::Superscript => MarkdownElementType::Superscript,
crate::lexer::token_type::MarkdownTokenType::Subscript => MarkdownElementType::Subscript,
crate::lexer::token_type::MarkdownTokenType::Abbreviation => MarkdownElementType::Abbreviation,
crate::lexer::token_type::MarkdownTokenType::HtmlTag => MarkdownElementType::HtmlTag,
crate::lexer::token_type::MarkdownTokenType::HtmlComment => MarkdownElementType::HtmlComment,
crate::lexer::token_type::MarkdownTokenType::XmlTag => MarkdownElementType::XmlTag,
crate::lexer::token_type::MarkdownTokenType::XmlComment => MarkdownElementType::XmlComment,
crate::lexer::token_type::MarkdownTokenType::AutoLink => MarkdownElementType::AutoLink,
crate::lexer::token_type::MarkdownTokenType::Error => MarkdownElementType::Error,
_ => MarkdownElementType::Error,
}
}
}