1use serde::Serialize;
2
3use super::{Element, Expression, MentionType, Parameters, ResolvedMediaInfo, Span};
4
5#[derive(Debug, Clone, Serialize)]
9pub struct NullElement {
10 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
11 pub span: Span,
12}
13
14#[derive(Debug, Clone, Serialize)]
16pub struct FootnoteRefElement {
17 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
18 pub span: Span,
19}
20
21#[derive(Debug, Clone, Serialize)]
23pub struct TimeNowElement {
24 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
25 pub span: Span,
26}
27
28#[derive(Debug, Clone, Serialize)]
30pub struct SoftBreakElement {
31 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
32 pub span: Span,
33}
34
35#[derive(Debug, Clone, Serialize)]
37pub struct HardBreakElement {
38 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
39 pub span: Span,
40}
41
42#[derive(Debug, Clone, Serialize)]
44pub struct HLineElement {
45 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
46 pub span: Span,
47}
48
49#[derive(Debug, Clone, Serialize)]
53pub struct TextElement {
54 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
55 pub span: Span,
56 pub value: String,
57}
58
59#[derive(Debug, Clone, Serialize)]
61pub struct CommentElement {
62 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
63 pub span: Span,
64 pub value: String,
65}
66
67#[derive(Debug, Clone, Serialize)]
69pub struct EscapeElement {
70 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
71 pub span: Span,
72 pub value: String,
73}
74
75#[derive(Debug, Clone, Serialize)]
77pub struct ErrorElement {
78 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
79 pub span: Span,
80 pub value: String,
81}
82
83#[derive(Debug, Clone, Serialize)]
87pub struct TextStyleElement {
88 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
89 pub span: Span,
90 pub children: Vec<Element>,
91}
92
93#[derive(Debug, Clone, Serialize)]
97pub struct LiteralElement {
98 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
99 pub span: Span,
100 pub children: Vec<Element>,
101}
102
103#[derive(Debug, Clone, Serialize)]
105pub struct DefineElement {
106 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
107 pub span: Span,
108 pub parameters: Parameters,
109}
110
111#[derive(Debug, Clone, Serialize)]
113pub struct StyledElement {
114 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
115 pub span: Span,
116 pub parameters: Parameters,
117 pub children: Vec<Element>,
118}
119
120#[derive(Debug, Clone, Serialize)]
122pub struct BlockQuoteElement {
123 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
124 pub span: Span,
125 pub parameters: Parameters,
126 pub children: Vec<Element>,
127}
128
129#[derive(Debug, Clone, Serialize)]
131pub struct RubyElement {
132 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
133 pub span: Span,
134 pub parameters: Parameters,
135 pub children: Vec<Element>,
136}
137
138#[derive(Debug, Clone, Serialize)]
140pub struct FootnoteElement {
141 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
142 pub span: Span,
143 pub footnote_index: usize,
144 pub parameters: Parameters,
145 pub children: Vec<Element>,
146}
147
148#[derive(Debug, Clone, Serialize)]
150pub struct CodeElement {
151 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
152 pub span: Span,
153 pub parameters: Parameters,
154 pub value: String,
155}
156
157#[derive(Debug, Clone, Serialize)]
159pub struct TeXElement {
160 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
161 pub span: Span,
162 pub is_block: bool,
163 pub value: String,
164}
165
166#[derive(Debug, Clone, Serialize)]
168pub struct FoldInnerElement {
169 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
170 pub span: Span,
171 pub parameters: Parameters,
172 pub children: Vec<Element>,
173}
174
175#[derive(Debug, Clone, Serialize)]
177pub struct FoldElement {
178 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
179 pub span: Span,
180 pub parameters: Parameters,
181 pub summary: FoldInnerElement,
182 pub details: FoldInnerElement,
183}
184
185#[derive(Debug, Clone, Serialize)]
189pub struct IncludeElement {
190 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
191 pub span: Span,
192 pub parameters: Parameters,
193 pub children: Vec<Element>,
194}
195
196#[derive(Debug, Clone, Serialize)]
198pub struct CategoryElement {
199 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
200 pub span: Span,
201 pub children: Vec<Element>,
202}
203
204#[derive(Debug, Clone, Serialize)]
206pub struct RedirectElement {
207 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
208 pub span: Span,
209 pub parameters: Parameters,
210 pub children: Vec<Element>,
211}
212
213#[derive(Debug, Clone, Serialize)]
217pub struct MediaElement {
218 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
219 pub span: Span,
220 pub parameters: Parameters,
221 pub children: Vec<Element>,
222 #[serde(skip_serializing_if = "Option::is_none")]
223 pub resolved_info: Option<ResolvedMediaInfo>,
224}
225
226#[derive(Debug, Clone, Serialize)]
228pub struct ExternalMediaElement {
229 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
230 pub span: Span,
231 pub provider: String,
232 pub parameters: Parameters,
233}
234
235#[derive(Debug, Clone, Serialize)]
239pub struct AgeElement {
240 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
241 pub span: Span,
242 pub date: String,
243}
244
245#[derive(Debug, Clone, Serialize)]
247pub struct VariableElement {
248 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
249 pub span: Span,
250 pub name: String,
251}
252
253#[derive(Debug, Clone, Serialize)]
255pub struct MentionElement {
256 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
257 pub span: Span,
258 pub kind: MentionType,
259 pub id: String,
260}
261
262#[derive(Debug, Clone, Serialize)]
266pub struct HeaderElement {
267 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
268 pub span: Span,
269 pub level: usize,
270 pub is_folded: bool,
271 pub section_index: usize,
272 pub children: Vec<Element>,
273}
274
275#[derive(Debug, Clone, Serialize)]
279pub struct IfElement {
280 #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
281 pub span: Span,
282 pub condition: Expression,
283 pub children: Vec<Element>,
284}