summaryrefslogtreecommitdiff
path: root/src/model/eval.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-11-22 20:12:37 +0100
committerLaurenz <laurmaedje@gmail.com>2022-11-22 20:12:37 +0100
commit5992f11b4c33d82fa245205980094accb57a8c76 (patch)
treeb0043ba4b4cabab2fa8f63ec80f37c9d247e134a /src/model/eval.rs
parentb476de87b7cea1405bf3c051ff8e0ac7c473dbae (diff)
Reorganize content type
Diffstat (limited to 'src/model/eval.rs')
-rw-r--r--src/model/eval.rs11
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>;
}