summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-03-12 14:24:24 +0100
committerLaurenz <laurmaedje@gmail.com>2022-03-12 14:24:24 +0100
commit2890a156d27c02a101137bf01dc2046597110bd1 (patch)
treec6bdeb48242c0fbd5b5e13120ca3c8f502d41b75 /src/eval/mod.rs
parent5ac7eb3860ebd3247f6486c227e816894cb8fd91 (diff)
Remove classes and improve naming
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index 79c0ad83..e00a40f2 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -8,8 +8,8 @@ mod dict;
mod value;
#[macro_use]
mod styles;
+mod args;
mod capture;
-mod class;
mod collapse;
mod content;
mod control;
@@ -20,9 +20,9 @@ mod ops;
mod scope;
mod show;
+pub use args::*;
pub use array::*;
pub use capture::*;
-pub use class::*;
pub use collapse::*;
pub use content::*;
pub use control::*;
@@ -417,11 +417,6 @@ impl Eval for CallExpr {
func.call(ctx, args).trace(point, self.span())
}
- Value::Class(class) => {
- let point = || Tracepoint::Call(Some(class.name().to_string()));
- class.construct(ctx, args).trace(point, self.span())
- }
-
v => bail!(
span,
"expected callable or collection, found {}",
@@ -520,7 +515,7 @@ impl Eval for ClosureExpr {
}
// Define the actual function.
- Ok(Value::Func(Func::closure(Closure {
+ Ok(Value::Func(Func::from_closure(Closure {
name,
captured,
params,
@@ -558,10 +553,10 @@ impl Eval for SetExpr {
type Output = StyleMap;
fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> {
- let class = self.class();
- let class = class.eval(ctx, scp)?.cast::<Class>().at(class.span())?;
+ let target = self.target();
+ let target = target.eval(ctx, scp)?.cast::<Func>().at(target.span())?;
let args = self.args().eval(ctx, scp)?;
- Ok(class.set(args)?)
+ Ok(target.set(args)?)
}
}
@@ -569,13 +564,13 @@ impl Eval for ShowExpr {
type Output = StyleMap;
fn eval(&self, ctx: &mut Context, scp: &mut Scopes) -> EvalResult<Self::Output> {
- let class = self.class();
- let class = class.eval(ctx, scp)?.cast::<Class>().at(class.span())?;
- let closure = self.closure();
- let func = closure.eval(ctx, scp)?.cast::<Func>().at(closure.span())?;
- let mut styles = StyleMap::new();
- styles.set_recipe(class.id(), func, self.span());
- Ok(styles)
+ let target = self.target();
+ let target_span = target.span();
+ let target = target.eval(ctx, scp)?.cast::<Func>().at(target_span)?;
+ let recipe = self.recipe();
+ let recipe_span = recipe.span();
+ let recipe = recipe.eval(ctx, scp)?.cast::<Func>().at(recipe_span)?;
+ Ok(target.show(recipe, recipe_span).at(target_span)?)
}
}