From e1f29d6cb9437a4afb2e4fc4ee10a5b8717ab9fa Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 22 Feb 2022 14:31:09 +0100 Subject: Rework the core context --- src/eval/class.rs | 11 +- src/eval/func.rs | 32 ++--- src/eval/layout.rs | 46 +++--- src/eval/mod.rs | 360 ++++++++++++++++++++++++----------------------- src/eval/module.rs | 20 +++ src/eval/scope.rs | 5 +- src/eval/show.rs | 8 +- src/eval/styles.rs | 12 +- src/eval/template.rs | 67 ++++----- src/export/pdf.rs | 2 +- src/lib.rs | 199 +++++++++++--------------- src/library/align.rs | 6 +- src/library/columns.rs | 13 +- src/library/container.rs | 4 +- src/library/deco.rs | 6 +- src/library/flow.rs | 10 +- src/library/grid.rs | 61 ++++---- src/library/heading.rs | 12 +- src/library/hide.rs | 6 +- src/library/image.rs | 10 +- src/library/link.rs | 15 +- src/library/list.rs | 12 +- src/library/math.rs | 6 +- src/library/mod.rs | 2 +- src/library/numbering.rs | 6 +- src/library/pad.rs | 6 +- src/library/page.rs | 16 +-- src/library/par.rs | 18 +-- src/library/place.rs | 6 +- src/library/raw.rs | 6 +- src/library/shape.rs | 8 +- src/library/spacing.rs | 4 +- src/library/stack.rs | 10 +- src/library/table.rs | 6 +- src/library/text.rs | 14 +- src/library/transform.rs | 6 +- src/library/utility.rs | 40 +++--- src/source.rs | 132 ++++++++++------- 38 files changed, 610 insertions(+), 593 deletions(-) create mode 100644 src/eval/module.rs (limited to 'src') diff --git a/src/eval/class.rs b/src/eval/class.rs index 5601fb0b..5e1857d7 100644 --- a/src/eval/class.rs +++ b/src/eval/class.rs @@ -2,8 +2,9 @@ use std::any::TypeId; use std::fmt::{self, Debug, Formatter, Write}; use std::hash::{Hash, Hasher}; -use super::{Args, Func, StyleMap, Template, Value, Vm}; +use super::{Args, Func, StyleMap, Template, Value}; use crate::diag::TypResult; +use crate::Context; /// A class of nodes. /// @@ -38,7 +39,7 @@ use crate::diag::TypResult; pub struct Class { name: &'static str, id: TypeId, - construct: fn(&mut Vm, &mut Args) -> TypResult, + construct: fn(&mut Context, &mut Args) -> TypResult, set: fn(&mut Args, &mut StyleMap) -> TypResult<()>, } @@ -81,8 +82,8 @@ impl Class { /// This parses both property and data arguments (in this order), styles the /// template constructed from the data with the style properties and wraps /// it in a value. - pub fn construct(&self, vm: &mut Vm, mut args: Args) -> TypResult { - let value = (self.construct)(vm, &mut args)?; + pub fn construct(&self, ctx: &mut Context, mut args: Args) -> TypResult { + let value = (self.construct)(ctx, &mut args)?; args.finish()?; Ok(value) } @@ -125,7 +126,7 @@ pub trait Construct { /// /// This is passed only the arguments that remain after execution of the /// class's set rule. - fn construct(vm: &mut Vm, args: &mut Args) -> TypResult