diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-04-07 18:04:29 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-04-07 18:04:29 +0200 |
| commit | 4bb6240b401605ef6d905273db07545e14f9a21f (patch) | |
| tree | b01163a5fce3fe62d16abcbdabf37bc373617ff1 /src/eval/ops.rs | |
| parent | 1192132dc0a9e991953fd29e93f87c8437a53ea0 (diff) | |
Make `Relative` generic
Diffstat (limited to 'src/eval/ops.rs')
| -rw-r--r-- | src/eval/ops.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/eval/ops.rs b/src/eval/ops.rs index 024de433..ff21d93f 100644 --- a/src/eval/ops.rs +++ b/src/eval/ops.rs @@ -2,7 +2,7 @@ use std::cmp::Ordering; use super::{Dynamic, StrExt, Value}; use crate::diag::StrResult; -use crate::geom::{Align, Spec, SpecAxis}; +use crate::geom::{Align, Numeric, Spec, SpecAxis}; use Value::*; /// Bail with a type mismatch error. @@ -66,12 +66,12 @@ pub fn add(lhs: Value, rhs: Value) -> StrResult<Value> { (Angle(a), Angle(b)) => Angle(a + b), (Length(a), Length(b)) => Length(a + b), - (Length(a), Ratio(b)) => Relative(a + b), - (Length(a), Relative(b)) => Relative(a + b), + (Length(a), Ratio(b)) => Relative(b + a), + (Length(a), Relative(b)) => Relative(b + a), (Ratio(a), Length(b)) => Relative(a + b), (Ratio(a), Ratio(b)) => Ratio(a + b), - (Ratio(a), Relative(b)) => Relative(a + b), + (Ratio(a), Relative(b)) => Relative(b + a), (Relative(a), Length(b)) => Relative(a + b), (Relative(a), Ratio(b)) => Relative(a + b), @@ -123,15 +123,15 @@ pub fn sub(lhs: Value, rhs: Value) -> StrResult<Value> { (Angle(a), Angle(b)) => Angle(a - b), (Length(a), Length(b)) => Length(a - b), - (Length(a), Ratio(b)) => Relative(a - b), - (Length(a), Relative(b)) => Relative(a - b), + (Length(a), Ratio(b)) => Relative(-b + a), + (Length(a), Relative(b)) => Relative(-b + a), - (Ratio(a), Length(b)) => Relative(a - b), + (Ratio(a), Length(b)) => Relative(a + -b), (Ratio(a), Ratio(b)) => Ratio(a - b), - (Ratio(a), Relative(b)) => Relative(a - b), + (Ratio(a), Relative(b)) => Relative(-b + a), - (Relative(a), Length(b)) => Relative(a - b), - (Relative(a), Ratio(b)) => Relative(a - b), + (Relative(a), Length(b)) => Relative(a + -b), + (Relative(a), Ratio(b)) => Relative(a + -b), (Relative(a), Relative(b)) => Relative(a - b), (Fraction(a), Fraction(b)) => Fraction(a - b), |
