Skip to main content

sevenmark_parser/ast/
list.rs

1use serde::Serialize;
2
3use super::{Element, Expression, Parameters, Span};
4
5/// 리스트 요소 {{{#list ...}}}
6#[derive(Debug, Clone, Serialize)]
7pub struct ListElement {
8    #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
9    pub span: Span,
10    pub kind: String,
11    pub parameters: Parameters,
12    pub children: Vec<ListContentItem>,
13}
14
15/// 리스트 콘텐츠 아이템 (아이템 또는 조건부)
16#[derive(Debug, Clone, Serialize)]
17pub enum ListContentItem {
18    Item(ListItemElement),
19    Conditional(ConditionalListItems),
20}
21
22/// 리스트 아이템
23#[derive(Debug, Clone, Serialize)]
24pub struct ListItemElement {
25    #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
26    pub span: Span,
27    pub parameters: Parameters,
28    pub children: Vec<Element>,
29}
30
31/// 조건부 리스트 아이템 ({{{#if condition :: [[item]]...}}})
32#[derive(Debug, Clone, Serialize)]
33pub struct ConditionalListItems {
34    #[cfg_attr(not(feature = "include_locations"), serde(skip_serializing))]
35    pub span: Span,
36    pub condition: Expression,
37    pub items: Vec<ListItemElement>,
38}