diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-11-22 20:12:37 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-11-22 20:12:37 +0100 |
| commit | 5992f11b4c33d82fa245205980094accb57a8c76 (patch) | |
| tree | b0043ba4b4cabab2fa8f63ec80f37c9d247e134a /src/model/eval.rs | |
| parent | b476de87b7cea1405bf3c051ff8e0ac7c473dbae (diff) | |
Reorganize content type
Diffstat (limited to 'src/model/eval.rs')
| -rw-r--r-- | src/model/eval.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/model/eval.rs b/src/model/eval.rs index 8078c87f..7c0cffb5 100644 --- a/src/model/eval.rs +++ b/src/model/eval.rs @@ -1,13 +1,14 @@ //! Evaluation of markup into modules. use std::collections::BTreeMap; +use std::mem; use comemo::{Track, Tracked}; use unicode_segmentation::UnicodeSegmentation; use super::{ methods, ops, Arg, Args, Array, CapturesVisitor, Closure, Content, Dict, Flow, Func, - Recipe, Scope, Scopes, Selector, StyleMap, Transform, Unlabellable, Value, Vm, + Recipe, Scope, Scopes, Selector, StyleMap, Transform, Value, Vm, }; use crate::diag::{bail, error, At, SourceResult, StrResult, Trace, Tracepoint}; use crate::geom::{Abs, Angle, Em, Fr, Ratio}; @@ -137,10 +138,8 @@ fn eval_markup( seq.push(tail.styled_with_recipe(vm.world, recipe)?) } ast::MarkupNode::Label(label) => { - if let Some(node) = - seq.iter_mut().rev().find(|node| !node.has::<dyn Unlabellable>()) - { - node.set_label(label.get().clone()); + if let Some(node) = seq.iter_mut().rev().find(|node| node.labellable()) { + *node = mem::take(node).labelled(label.get().clone()); } } _ => seq.push(node.eval(vm)?), @@ -1080,7 +1079,7 @@ impl Eval for ast::FuncReturn { } /// Access an expression mutably. -pub trait Access { +trait Access { /// Access the value. fn access<'a>(&self, vm: &'a mut Vm) -> SourceResult<&'a mut Value>; } |
