From af8bd516b2d2d9df919cdbcd5fc6824a7aeba82f Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Fri, 14 Feb 2020 12:11:08 -0500 Subject: [PATCH] Implement builtin function `grayscale()` --- src/builtin/color.rs | 7 +++++++ tests/color.rs | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/builtin/color.rs b/src/builtin/color.rs index 4ab295b..a1d375a 100644 --- a/src/builtin/color.rs +++ b/src/builtin/color.rs @@ -314,4 +314,11 @@ pub(crate) fn register(f: &mut BTreeMap) { }; Some(Value::Color(color.fade_out(amount))) }); + decl!(f "grayscale", |args, _| { + let color = match arg!(args, 0, "color").eval() { + Value::Color(c) => c, + _ => todo!("non-color given to builtin function `grayscale()`") + }; + Some(Value::Color(color.desaturate(Number::from(1)))) + }); } diff --git a/tests/color.rs b/tests/color.rs index 3255070..7f2dce7 100644 --- a/tests/color.rs +++ b/tests/color.rs @@ -341,3 +341,13 @@ test!( "a {\n color: opacify(rgba(0, 0, 17, 0.8), 0.2);\n}\n", "a {\n color: #000011;\n}\n" ); +test!( + grayscale_1, + "a {\n color: grayscale(plum);\n}\n", + "a {\n color: #bfbfbf;\n}\n" +); +test!( + grayscale_2, + "a {\n color: grayscale(red);\n}\n", + "a {\n color: gray;\n}\n" +);