Skip to main content

coil_template/model/
requests.rs

1use super::*;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub enum SlotFill {
5    Template(TemplateSelector),
6    Nodes(Vec<Node>),
7}
8
9#[derive(Debug, Clone, PartialEq, Eq)]
10pub struct DocumentRenderRequest {
11    pub(crate) layout: TemplateSelector,
12    pub(crate) model: RenderModel,
13    pub(crate) slots: BTreeMap<SlotName, SlotFill>,
14}
15
16impl DocumentRenderRequest {
17    pub fn new(layout: TemplateSelector, model: RenderModel) -> Self {
18        Self {
19            layout,
20            model,
21            slots: BTreeMap::new(),
22        }
23    }
24
25    pub fn with_slot_fill(mut self, slot: SlotName, fill: SlotFill) -> Self {
26        self.slots.insert(slot, fill);
27        self
28    }
29}
30
31#[derive(Debug, Clone, PartialEq, Eq)]
32pub struct FragmentRenderRequest {
33    pub(crate) fragment: TemplateSelector,
34    pub(crate) model: RenderModel,
35}
36
37impl FragmentRenderRequest {
38    pub fn new(fragment: TemplateSelector, model: RenderModel) -> Self {
39        Self { fragment, model }
40    }
41}