diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-01-17 16:18:36 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-01-17 16:18:36 +0100 |
| commit | dd246e5bc944f90be7ba2981c2b73520a4bfbf45 (patch) | |
| tree | 0fee09e170431ba88501ee165743a4d7010e6a84 /src/eval/mod.rs | |
| parent | 29be90bf95f2ea10c435e7b02f8c26626b956417 (diff) | |
Spans for group and block contents 📐
Diffstat (limited to 'src/eval/mod.rs')
| -rw-r--r-- | src/eval/mod.rs | 48 |
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() - } -} |
