diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/eval.rs | 6 | ||||
| -rw-r--r-- | src/model/styles.rs | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/model/eval.rs b/src/model/eval.rs index 79ad0815..b7df12aa 100644 --- a/src/model/eval.rs +++ b/src/model/eval.rs @@ -851,7 +851,11 @@ impl Eval for ast::ShowRule { let transform = self.transform(); let span = transform.span(); - let transform = transform.eval(vm)?.cast::<Transform>().at(span)?; + + let transform = match transform { + ast::Expr::Set(set) => Transform::Style(set.eval(vm)?), + expr => expr.eval(vm)?.cast::<Transform>().at(span)?, + }; Ok(Recipe { span, selector, transform }) } diff --git a/src/model/styles.rs b/src/model/styles.rs index 4195d3e1..30db00bd 100644 --- a/src/model/styles.rs +++ b/src/model/styles.rs @@ -491,6 +491,8 @@ pub enum Transform { Content(Content), /// A function to apply to the match. Func(Func), + /// Apply styles to the content. + Style(StyleMap), } impl Transform { @@ -512,6 +514,7 @@ impl Transform { } Ok(result?.display()) } + Transform::Style(styles) => Ok(content.styled_with_map(styles.clone())), } } } |
