coil_template/model/
template.rs1use super::*;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum TemplateKind {
5 Layout,
6 Fragment,
7}
8
9impl fmt::Display for TemplateKind {
10 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11 match self {
12 Self::Layout => f.write_str("layout"),
13 Self::Fragment => f.write_str("fragment"),
14 }
15 }
16}
17
18#[derive(Debug, Clone, PartialEq, Eq)]
19pub struct TemplateSelector {
20 name: TemplateName,
21}
22
23impl TemplateSelector {
24 pub fn new(name: TemplateName) -> Self {
25 Self { name }
26 }
27
28 pub fn name(&self) -> &TemplateName {
29 &self.name
30 }
31}
32
33#[derive(Debug, Clone, PartialEq, Eq)]
34pub struct TemplateDefinition {
35 pub key: TemplateKey,
36 pub kind: TemplateKind,
37 pub nodes: Vec<Node>,
38}
39
40impl TemplateDefinition {
41 pub fn layout(namespace: TemplateNamespace, name: TemplateName, nodes: Vec<Node>) -> Self {
42 Self {
43 key: TemplateKey::new(namespace, name),
44 kind: TemplateKind::Layout,
45 nodes,
46 }
47 }
48
49 pub fn fragment(namespace: TemplateNamespace, name: TemplateName, nodes: Vec<Node>) -> Self {
50 Self {
51 key: TemplateKey::new(namespace, name),
52 kind: TemplateKind::Fragment,
53 nodes,
54 }
55 }
56}