summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-01-15 16:53:02 +0100
committerLaurenz <laurmaedje@gmail.com>2021-01-15 16:53:02 +0100
commitd763f0f5a6a700352ee8926c15c8e58624f705c9 (patch)
treed287edfdab9793a796404516c7313689e4e69964 /src/lib.rs
parent0f0416054f263b80ccec1a463ce4ab20913bdf71 (diff)
Split state and scopes, less ref-counting 🔀
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 05cc0569..39ca47a3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -42,18 +42,21 @@ pub mod pretty;
pub mod shaping;
pub mod syntax;
-use std::rc::Rc;
-
use crate::diag::{Feedback, Pass};
-use crate::env::SharedEnv;
-use crate::eval::State;
+use crate::env::Env;
+use crate::eval::{Scope, State};
use crate::layout::Frame;
/// Process _Typst_ source code directly into a collection of frames.
-pub fn typeset(src: &str, env: SharedEnv, state: State) -> Pass<Vec<Frame>> {
+pub fn typeset(
+ src: &str,
+ env: &mut Env,
+ scope: &Scope,
+ state: State,
+) -> Pass<Vec<Frame>> {
let Pass { output: syntax_tree, feedback: f1 } = parse::parse(src);
let Pass { output: layout_tree, feedback: f2 } =
- eval::eval(&syntax_tree, Rc::clone(&env), state);
+ eval::eval(&syntax_tree, env, scope, state);
let frames = layout::layout(&layout_tree, env);
Pass::new(frames, Feedback::join(f1, f2))
}