handle negative values in 1arg rgba?

This commit is contained in:
ConnorSkees 2020-06-02 17:06:31 -04:00
parent 8846a09d1c
commit 29f7b286b0
2 changed files with 8 additions and 3 deletions

View File

@ -39,7 +39,7 @@ fn inner_rgb(
.into()); .into());
} }
let blue = match channels.pop() { let blue = match channels.pop().map(|v| v.eval(args.span()).unwrap().node) {
Some(Value::Dimension(n, Unit::None)) => n, Some(Value::Dimension(n, Unit::None)) => n,
Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255), Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255),
Some(v) if v.is_special_function() => { Some(v) if v.is_special_function() => {
@ -66,7 +66,7 @@ fn inner_rgb(
None => return Err(("Missing element $blue.", args.span()).into()), None => return Err(("Missing element $blue.", args.span()).into()),
}; };
let green = match channels.pop() { let green = match channels.pop().map(|v| v.eval(args.span()).unwrap().node) {
Some(Value::Dimension(n, Unit::None)) => n, Some(Value::Dimension(n, Unit::None)) => n,
Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255), Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255),
Some(v) if v.is_special_function() => { Some(v) if v.is_special_function() => {
@ -92,7 +92,7 @@ fn inner_rgb(
None => return Err(("Missing element $green.", args.span()).into()), None => return Err(("Missing element $green.", args.span()).into()),
}; };
let red = match channels.pop() { let red = match channels.pop().map(|v| v.eval(args.span()).unwrap().node) {
Some(Value::Dimension(n, Unit::None)) => n, Some(Value::Dimension(n, Unit::None)) => n,
Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255), Some(Value::Dimension(n, Unit::Percent)) => (n / Number::from(100)) * Number::from(255),
Some(v) if v.is_special_function() => { Some(v) if v.is_special_function() => {

View File

@ -572,3 +572,8 @@ test!(
"a {\n color: opacity(transparent);\n}\n", "a {\n color: opacity(transparent);\n}\n",
"a {\n color: 0;\n}\n" "a {\n color: 0;\n}\n"
); );
test!(
negative_values_in_rgb,
"a {\n color: rgb(-1 -1 -1);\n}\n",
"a {\n color: black;\n}\n"
);