From d59109e8fffa1d0b03234329e12f5d3e578804e8 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 3 May 2022 15:58:15 +0200 Subject: Support recursive show rules --- src/eval/value.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/eval/value.rs') diff --git a/src/eval/value.rs b/src/eval/value.rs index 352906aa..ba30348f 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -11,7 +11,7 @@ use crate::geom::{ Angle, Color, Dir, Em, Fraction, Length, Paint, Ratio, Relative, RgbaColor, Sides, }; use crate::library::text::RawNode; -use crate::model::{Content, Layout, LayoutNode}; +use crate::model::{Content, Layout, LayoutNode, Pattern}; use crate::syntax::Spanned; use crate::util::EcoString; @@ -617,13 +617,13 @@ where } let sides = Sides { - left: dict.get("left".into()).or_else(|_| dict.get("x".into())), - top: dict.get("top".into()).or_else(|_| dict.get("y".into())), - right: dict.get("right".into()).or_else(|_| dict.get("x".into())), - bottom: dict.get("bottom".into()).or_else(|_| dict.get("y".into())), + left: dict.get(&"left".into()).or_else(|_| dict.get(&"x".into())), + top: dict.get(&"top".into()).or_else(|_| dict.get(&"y".into())), + right: dict.get(&"right".into()).or_else(|_| dict.get(&"x".into())), + bottom: dict.get(&"bottom".into()).or_else(|_| dict.get(&"y".into())), } .map(|side| { - side.or_else(|_| dict.get("rest".into())) + side.or_else(|_| dict.get(&"rest".into())) .and_then(|v| T::cast(v.clone())) .unwrap_or_default() }); @@ -684,6 +684,12 @@ castable! { Value::Content(content) => content.pack(), } +castable! { + Pattern, + Expected: "function", + Value::Func(func) => Pattern::Node(func.node()?), +} + #[cfg(test)] mod tests { use super::*; -- cgit v1.2.3