Skip to main content

finemark_ast/elements/
mod.rs

1mod block;
2mod inline;
3mod list;
4mod parameter;
5mod table;
6
7pub use block::*;
8pub use inline::*;
9pub use list::*;
10pub use parameter::*;
11pub use table::*;
12
13use serde::Serialize;
14
15#[derive(Debug, Clone, Serialize)]
16pub enum Element<'i> {
17    // Inline elements
18    Text(TextElement<'i>),
19    Comment(CommentElement<'i>),
20    Escape(EscapeElement<'i>),
21    Error(ErrorElement<'i>),
22    Link(LinkElement<'i>),
23    InlineCode(InlineCodeElement<'i>),
24    TeX(TeXElement<'i>),
25    Bold(TextStyleElement<'i>),
26    Italic(TextStyleElement<'i>),
27    Strikethrough(TextStyleElement<'i>),
28    Underline(TextStyleElement<'i>),
29    Superscript(TextStyleElement<'i>),
30    Subscript(TextStyleElement<'i>),
31    SoftBreak(SoftBreakElement),
32    HardBreak(HardBreakElement),
33
34    // Block elements
35    Heading(HeadingElement<'i>),
36    BlockQuote(BlockQuoteElement<'i>),
37    List(ListElement<'i>),
38    HLine(HLineElement<'i>),
39    CodeBlock(CodeBlockElement<'i>),
40    Table(TableElement<'i>),
41    TableRow(TableRowElement<'i>),
42    TableColumn(TableColumnElement<'i>),
43    ParagraphBreak(ParagraphBreakElement),
44}
45
46impl Element<'_> {
47    pub fn span(&self) -> &crate::Span {
48        match self {
49            Element::Text(element) => &element.span,
50            Element::Comment(element) => &element.span,
51            Element::Escape(element) => &element.span,
52            Element::Error(element) => &element.span,
53            Element::Link(element) => &element.span,
54            Element::InlineCode(element) => &element.span,
55            Element::TeX(element) => &element.span,
56            Element::Bold(element) => &element.span,
57            Element::Italic(element) => &element.span,
58            Element::Strikethrough(element) => &element.span,
59            Element::Underline(element) => &element.span,
60            Element::Superscript(element) => &element.span,
61            Element::Subscript(element) => &element.span,
62            Element::SoftBreak(e) => &e.span,
63            Element::HardBreak(e) => &e.span,
64            Element::Heading(element) => &element.span,
65            Element::BlockQuote(element) => &element.span,
66            Element::List(element) => &element.span,
67            Element::HLine(element) => &element.span,
68            Element::CodeBlock(element) => &element.span,
69            Element::Table(element) => &element.span,
70            Element::TableRow(element) => &element.span,
71            Element::TableColumn(element) => &element.span,
72            Element::ParagraphBreak(e) => &e.span,
73        }
74    }
75}