1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use crate::template::shards::{Condition, Helper, List, Loop, StringPart};
pub(crate) type Template = List<TemplatePart>;
#[derive(Debug, PartialEq)]
pub(crate) enum TemplatePart {
StringPart(StringPart<string_breakers::TemplateStringBreakers>),
GlobalHelper(Helper),
GlobalCondition(Condition<Template>),
NodesLoop(Loop<NodeTemplate, loops_bounds::NodesLoopBounds>),
MessagesLoop(Loop<MessageTemplate, loops_bounds::MessagesLoopBounds>),
}
pub(crate) type NodeTemplate = List<NodeTemplatePart>;
#[derive(Debug, PartialEq)]
pub(crate) enum NodeTemplatePart {
StringPart(StringPart<string_breakers::NodeTemplateStringBreakers>),
Helper(Helper),
Condition(Condition<NodeTemplate>),
FieldsLoop(Loop<NodeFieldTemplate, loops_bounds::NodeFieldsLoopBounds>),
}
pub(crate) type NodeFieldTemplate = List<NodeFieldTemplatePart>;
#[derive(Debug, PartialEq)]
pub(crate) enum NodeFieldTemplatePart {
StringPart(StringPart<string_breakers::NodeFieldTemplateStringBreakers>),
Helper(Helper),
Condition(Condition<NodeFieldTemplate>),
}
pub(crate) type MessageTemplate = List<MessageTemplatePart>;
#[derive(Debug, PartialEq)]
pub(crate) enum MessageTemplatePart {
StringPart(StringPart<string_breakers::MessageTemplateStringBreakers>),
Helper(Helper),
Condition(Condition<MessageTemplate>),
FieldsLoop(Loop<MessageFieldTemplate, loops_bounds::MessageFieldsLoopBounds>),
}
pub(crate) type MessageFieldTemplate = List<MessageFieldTemplatePart>;
#[derive(Debug, PartialEq)]
pub(crate) enum MessageFieldTemplatePart {
StringPart(StringPart<string_breakers::MessageFieldTemplateStringBreakers>),
Helper(Helper),
Condition(Condition<MessageFieldTemplate>),
}
pub(crate) mod loops_bounds {
#[derive(Debug, PartialEq)]
pub(crate) struct NodesLoopBounds;
#[derive(Debug, PartialEq)]
pub(crate) struct NodeFieldsLoopBounds;
#[derive(Debug, PartialEq)]
pub(crate) struct MessagesLoopBounds;
#[derive(Debug, PartialEq)]
pub(crate) struct MessageFieldsLoopBounds;
}
pub(crate) mod string_breakers {
#[derive(Debug, PartialEq)]
pub(crate) struct TemplateStringBreakers;
#[derive(Debug, PartialEq)]
pub(crate) struct NodeTemplateStringBreakers;
#[derive(Debug, PartialEq)]
pub(crate) struct NodeFieldTemplateStringBreakers;
#[derive(Debug, PartialEq)]
pub(crate) struct MessageTemplateStringBreakers;
#[derive(Debug, PartialEq)]
pub(crate) struct MessageFieldTemplateStringBreakers;
}