finemark_ast/elements/
mod.rs1mod 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 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 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}