summaryrefslogtreecommitdiff
path: root/src/eval
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-01-17 16:18:36 +0100
committerLaurenz <laurmaedje@gmail.com>2021-01-17 16:18:36 +0100
commitdd246e5bc944f90be7ba2981c2b73520a4bfbf45 (patch)
tree0fee09e170431ba88501ee165743a4d7010e6a84 /src/eval
parent29be90bf95f2ea10c435e7b02f8c26626b956417 (diff)
Spans for group and block contents 📐
Diffstat (limited to 'src/eval')
-rw-r--r--src/eval/mod.rs48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index efc77f69..c7b87aef 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -172,14 +172,14 @@ impl Eval for Spanned<&Expr> {
Expr::Percent(v) => Value::Relative(Relative::new(v / 100.0)),
Expr::Color(v) => Value::Color(Color::Rgba(*v)),
Expr::Str(v) => Value::Str(v.clone()),
- Expr::Call(v) => v.with_span(self.span).eval(ctx),
- Expr::Unary(v) => v.with_span(self.span).eval(ctx),
- Expr::Binary(v) => v.with_span(self.span).eval(ctx),
Expr::Array(v) => Value::Array(v.with_span(self.span).eval(ctx)),
Expr::Dict(v) => Value::Dict(v.with_span(self.span).eval(ctx)),
Expr::Template(v) => Value::Template(v.clone()),
- Expr::Group(v) => v.as_ref().with_span(self.span).eval(ctx),
- Expr::Block(v) => v.as_ref().with_span(self.span).eval(ctx),
+ Expr::Call(v) => v.with_span(self.span).eval(ctx),
+ Expr::Unary(v) => v.with_span(self.span).eval(ctx),
+ Expr::Binary(v) => v.with_span(self.span).eval(ctx),
+ Expr::Group(v) => v.as_ref().eval(ctx),
+ Expr::Block(v) => v.as_ref().eval(ctx),
Expr::Let(v) => {
let value = match &v.expr {
Some(expr) => expr.as_ref().eval(ctx),
@@ -192,6 +192,25 @@ impl Eval for Spanned<&Expr> {
}
}
+impl Eval for Spanned<&ExprArray> {
+ type Output = ValueArray;
+
+ fn eval(self, ctx: &mut EvalContext) -> Self::Output {
+ self.v.iter().map(|expr| expr.as_ref().eval(ctx)).collect()
+ }
+}
+
+impl Eval for Spanned<&ExprDict> {
+ type Output = ValueDict;
+
+ fn eval(self, ctx: &mut EvalContext) -> Self::Output {
+ self.v
+ .iter()
+ .map(|Named { name, expr }| (name.v.0.clone(), expr.as_ref().eval(ctx)))
+ .collect()
+ }
+}
+
impl Eval for Spanned<&ExprUnary> {
type Output = Value;
@@ -230,22 +249,3 @@ impl Eval for Spanned<&ExprBinary> {
}
}
}
-
-impl Eval for Spanned<&ExprArray> {
- type Output = ValueArray;
-
- fn eval(self, ctx: &mut EvalContext) -> Self::Output {
- self.v.iter().map(|expr| expr.as_ref().eval(ctx)).collect()
- }
-}
-
-impl Eval for Spanned<&ExprDict> {
- type Output = ValueDict;
-
- fn eval(self, ctx: &mut EvalContext) -> Self::Output {
- self.v
- .iter()
- .map(|Named { name, expr }| (name.v.0.clone(), expr.as_ref().eval(ctx)))
- .collect()
- }
-}