diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-11-16 12:47:14 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-11-16 12:47:14 +0100 |
| commit | 79638d4bbdc140a8dca0ccfdf70ffd607d5da251 (patch) | |
| tree | 3da8a7d345ccac389d07c8327d9c63fd7209a250 /src/eval/template.rs | |
| parent | 73c4701749ac3919c5b845002052326502c67306 (diff) | |
Don't wrap already layoutable nodes into flows/pars unnecessarily
Diffstat (limited to 'src/eval/template.rs')
| -rw-r--r-- | src/eval/template.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/eval/template.rs b/src/eval/template.rs index 82a069f9..0604cc05 100644 --- a/src/eval/template.rs +++ b/src/eval/template.rs @@ -149,12 +149,15 @@ impl Template { Self(Rc::new(vec![TemplateNode::Decorated(deco, self)])) } - /// Build the flow node resulting from instantiating the template with the - /// given style. - pub fn to_flow(&self, style: &Style) -> FlowNode { - let mut builder = Builder::new(style, false); - builder.template(self); - builder.build_flow() + /// Pack the template into a layout node. + pub fn pack(&self, style: &Style) -> PackedNode { + if let [TemplateNode::Block(f) | TemplateNode::Inline(f)] = self.0.as_slice() { + f(style) + } else { + let mut builder = Builder::new(style, false); + builder.template(self); + builder.build_flow().pack() + } } /// Build the layout tree resulting from instantiating the template with the |
