diff options
Diffstat (limited to 'src/eval/value.rs')
| -rw-r--r-- | src/eval/value.rs | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/src/eval/value.rs b/src/eval/value.rs index fa7993ed..51e45190 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -8,7 +8,7 @@ use std::rc::Rc; use super::EvalContext; use crate::color::{Color, RgbaColor}; use crate::exec::ExecContext; -use crate::geom::{Angle, Fractional, Length, Linear, Relative, TrackSizing}; +use crate::geom::{Angle, Fractional, Length, Linear, Relative}; use crate::syntax::{Expr, Span, Spanned, Tree}; /// A computational value. @@ -16,6 +16,8 @@ use crate::syntax::{Expr, Span, Spanned, Tree}; pub enum Value { /// The value that indicates the absence of a meaningful value. None, + /// A value that indicates some smart default behaviour. + Auto, /// A boolean: `true, false`. Bool(bool), /// An integer: `120`. @@ -28,12 +30,10 @@ pub enum Value { Angle(Angle), /// A relative value: `50%`. Relative(Relative), - /// A fractional value: `1fr`. - Fractional(Fractional), /// A combination of an absolute length and a relative value: `20% + 5cm`. Linear(Linear), - /// One of the units that can appear in a grid definition. - TrackSizing(TrackSizing), + /// A fractional value: `1fr`. + Fractional(Fractional), /// A color value: `#f79143ff`. Color(Color), /// A string: `"string"`. @@ -73,15 +73,15 @@ impl Value { pub fn type_name(&self) -> &'static str { match self { Self::None => "none", + Self::Auto => "auto", Self::Bool(_) => bool::TYPE_NAME, Self::Int(_) => i64::TYPE_NAME, Self::Float(_) => f64::TYPE_NAME, Self::Length(_) => Length::TYPE_NAME, Self::Angle(_) => Angle::TYPE_NAME, Self::Relative(_) => Relative::TYPE_NAME, - Self::Fractional(_) => Fractional::TYPE_NAME, Self::Linear(_) => Linear::TYPE_NAME, - Self::TrackSizing(_) => TrackSizing::TYPE_NAME, + Self::Fractional(_) => Fractional::TYPE_NAME, Self::Color(_) => Color::TYPE_NAME, Self::Str(_) => String::TYPE_NAME, Self::Array(_) => ArrayValue::TYPE_NAME, @@ -100,14 +100,6 @@ impl Value { (&Self::Float(a), &Self::Int(b)) => a == b as f64, (&Self::Length(a), &Self::Linear(b)) => a == b.abs && b.rel.is_zero(), (&Self::Relative(a), &Self::Linear(b)) => a == b.rel && b.abs.is_zero(), - (&Self::Length(a), &Self::TrackSizing(b)) => TrackSizing::from(a) == b, - (&Self::Relative(a), &Self::TrackSizing(b)) => TrackSizing::from(a) == b, - (&Self::Linear(a), &Self::TrackSizing(b)) => TrackSizing::from(a) == b, - (&Self::Fractional(a), &Self::TrackSizing(b)) => TrackSizing::from(a) == b, - (&Self::TrackSizing(a), &Self::Length(b)) => TrackSizing::from(b) == a, - (&Self::TrackSizing(a), &Self::Relative(b)) => TrackSizing::from(b) == a, - (&Self::TrackSizing(a), &Self::Linear(b)) => TrackSizing::from(b) == a, - (&Self::TrackSizing(a), &Self::Fractional(b)) => TrackSizing::from(b) == a, (&Self::Linear(a), &Self::Length(b)) => a.abs == b && a.rel.is_zero(), (&Self::Linear(a), &Self::Relative(b)) => a.rel == b && a.abs.is_zero(), (Self::Array(a), Self::Array(b)) => { @@ -615,21 +607,13 @@ primitive! { primitive! { Length: "length", Value::Length } primitive! { Angle: "angle", Value::Angle } primitive! { Relative: "relative", Value::Relative } -primitive! { Fractional: "fractional", Value::Fractional } primitive! { Linear: "linear", Value::Linear, Value::Length(v) => v.into(), Value::Relative(v) => v.into(), } -primitive! { - TrackSizing: "GridUnit", - Value::TrackSizing, - Value::Length(v) => v.into(), - Value::Relative(v) => v.into(), - Value::Linear(v) => v.into(), - Value::Fractional(v) => v.into(), -} +primitive! { Fractional: "fractional", Value::Fractional } primitive! { Color: "color", Value::Color } primitive! { String: "string", Value::Str } primitive! { ArrayValue: "array", Value::Array } |
