Skip to content

Commit 611ca53

Browse files
committed
Refactor lengths to handle calcs
1 parent fa8ee50 commit 611ca53

File tree

4 files changed

+376
-133
lines changed

4 files changed

+376
-133
lines changed

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,8 @@ mod tests {
11661166
minify_test(".foo { width: calc(200px * +1) }", ".foo{width:200px}");
11671167
minify_test(".foo { width: calc(200px / +1) }", ".foo{width:200px}");
11681168
minify_test(".foo { width: calc(1.1e+1px + 1.1e+1px) }", ".foo{width:22px}");
1169+
minify_test(".foo { border-width: calc(1px + 2px) }", ".foo{border-width:3px}");
1170+
minify_test(".foo { border-width: calc(1em + 2px + 2em + 3px) }", ".foo{border-width:calc(3em + 5px)}");
11691171
}
11701172

11711173
#[test]

src/properties/flex.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ impl ToCss for Flex {
144144
}
145145

146146
let is_basis_zero = match &self.basis {
147-
LengthPercentageOrAuto::LengthPercentage(LengthPercentage::Percentage(Percentage(b))) |
148-
LengthPercentageOrAuto::LengthPercentage(LengthPercentage::Length(Length {value: b, ..})) => *b == 0.0,
147+
LengthPercentageOrAuto::LengthPercentage(LengthPercentage::Percentage(percentage)) => *percentage == 0.0,
148+
LengthPercentageOrAuto::LengthPercentage(LengthPercentage::Length(length)) => *length == 0.0,
149149
_ => false
150150
};
151151

src/properties/transform.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::traits::{Parse, ToCss};
33
use crate::values::{
44
angle::Angle,
55
percentage::NumberOrPercentage,
6-
length::{LengthPercentage, Length, Unit}
6+
length::{LengthPercentage, Length, AbsoluteLength}
77
};
88
use crate::printer::Printer;
99
use std::fmt::Write;
@@ -469,7 +469,7 @@ impl Matrix3d<f32> {
469469
let perspective = perspective_matrix.multiply_vector(&right_hand_side);
470470
if perspective[0] == 0.0 && perspective[1] == 0.0 && perspective[3] == 0.0 {
471471
transforms.push(Transform::Perspective(
472-
Length { value: -1.0 / perspective[2], unit: Unit::Px }
472+
Length::px(-1.0 / perspective[2])
473473
))
474474
} else {
475475
return None
@@ -480,9 +480,9 @@ impl Matrix3d<f32> {
480480
// let translate = Translate3D(matrix.m41, matrix.m42, matrix.m43);
481481
if matrix.m41 != 0.0 || matrix.m42 != 0.0 || matrix.m43 != 0.0 {
482482
transforms.push(Transform::Translate3d(
483-
LengthPercentage::Length(Length { value: matrix.m41, unit: Unit::Px }),
484-
LengthPercentage::Length(Length { value: matrix.m42, unit: Unit::Px }),
485-
Length { value: matrix.m43, unit: Unit::Px },
483+
LengthPercentage::Length(Length::px(matrix.m41)),
484+
LengthPercentage::Length(Length::px(matrix.m42)),
485+
Length::px(matrix.m43),
486486
));
487487
}
488488

@@ -831,16 +831,16 @@ impl ToCss for Transform {
831831
dest.write_char(')')
832832
}
833833
Translate3d(x, y, z) => {
834-
if dest.minify && *x != 0.0 && *y == 0.0 && z.is_zero() {
834+
if dest.minify && *x != 0.0 && *y == 0.0 && *z == 0.0 {
835835
dest.write_str("translate(")?;
836836
x.to_css(dest)?;
837-
} else if dest.minify && *x == 0.0 && *y != 0.0 && z.is_zero() {
837+
} else if dest.minify && *x == 0.0 && *y != 0.0 && *z == 0.0 {
838838
dest.write_str("translateY(")?;
839839
y.to_css(dest)?;
840-
} else if dest.minify && *x == 0.0 && *y == 0.0 && !z.is_zero() {
840+
} else if dest.minify && *x == 0.0 && *y == 0.0 && *z != 0.0 {
841841
dest.write_str("translateZ(")?;
842842
z.to_css(dest)?;
843-
} else if dest.minify && z.is_zero() {
843+
} else if dest.minify && *z == 0.0 {
844844
dest.write_str("translate(")?;
845845
x.to_css(dest)?;
846846
dest.delim(',', false)?;

0 commit comments

Comments
 (0)