Skip to content

Commit d3c2076

Browse files
committed
Parse transforms
1 parent 649f85c commit d3c2076

File tree

4 files changed

+503
-1
lines changed

4 files changed

+503
-1
lines changed

src/lib.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1481,4 +1481,37 @@ mod tests {
14811481
}
14821482
"#});
14831483
}
1484+
1485+
#[test]
1486+
fn test_transform() {
1487+
minify_test(".foo { transform: translate(2px, 3px)", ".foo{transform:translate(2px,3px)}");
1488+
minify_test(".foo { transform: translate(2px, 0px)", ".foo{transform:translate(2px)}");
1489+
minify_test(".foo { transform: translate(0px, 2px)", ".foo{transform:translateY(2px)}");
1490+
minify_test(".foo { transform: translateX(2px)", ".foo{transform:translate(2px)}");
1491+
minify_test(".foo { transform: translateY(2px)", ".foo{transform:translateY(2px)}");
1492+
minify_test(".foo { transform: translateZ(2px)", ".foo{transform:translateZ(2px)}");
1493+
minify_test(".foo { transform: translate3d(2px, 3px, 4px)", ".foo{transform:translate3d(2px,3px,4px)}");
1494+
minify_test(".foo { transform: translate3d(10%, 20%, 4px)", ".foo{transform:translate3d(10%,20%,4px)}");
1495+
minify_test(".foo { transform: scale(2, 3)", ".foo{transform:scale(2,3)}");
1496+
minify_test(".foo { transform: scale(10%, 20%)", ".foo{transform:scale(10%,20%)}");
1497+
minify_test(".foo { transform: scale(2, 2)", ".foo{transform:scale(2)}");
1498+
minify_test(".foo { transform: scale(2, 1)", ".foo{transform:scaleX(2)}");
1499+
minify_test(".foo { transform: scale(1, 2)", ".foo{transform:scaleY(2)}");
1500+
minify_test(".foo { transform: scaleX(2)", ".foo{transform:scaleX(2)}");
1501+
minify_test(".foo { transform: scaleY(2)", ".foo{transform:scaleY(2)}");
1502+
minify_test(".foo { transform: scale3d(2, 3, 4)", ".foo{transform:scale3d(2,3,4)}");
1503+
minify_test(".foo { transform: rotate(20deg)", ".foo{transform:rotate(20deg)}");
1504+
minify_test(".foo { transform: rotateX(20deg)", ".foo{transform:rotateX(20deg)}");
1505+
minify_test(".foo { transform: rotateY(20deg)", ".foo{transform:rotateY(20deg)}");
1506+
minify_test(".foo { transform: rotateZ(20deg)", ".foo{transform:rotateZ(20deg)}");
1507+
minify_test(".foo { transform: rotate3d(2, 3, 4, 20deg)", ".foo{transform:rotate3d(2,3,4,20deg)}");
1508+
minify_test(".foo { transform: skew(20deg)", ".foo{transform:skew(20deg)}");
1509+
minify_test(".foo { transform: skew(20deg, 0deg)", ".foo{transform:skew(20deg)}");
1510+
minify_test(".foo { transform: skew(0deg, 20deg)", ".foo{transform:skewY(20deg)}");
1511+
minify_test(".foo { transform: skewX(20deg)", ".foo{transform:skew(20deg)}");
1512+
minify_test(".foo { transform: skewY(20deg)", ".foo{transform:skewY(20deg)}");
1513+
minify_test(".foo { transform: perspective(10px)", ".foo{transform:perspective(10px)}");
1514+
minify_test(".foo { transform: matrix(1, 2, -1, 1, 80, 80)", ".foo{transform:matrix(1,2,-1,1,80,80)}");
1515+
minify_test(".foo { transform: matrix3d(1, 0, 0, 0, 0, 1, 6, 0, 0, 0, 1, 0, 50, 100, 0, 1.1)", ".foo{transform:matrix3d(1,0,0,0,0,1,6,0,0,0,1,0,50,100,0,1.1)}");
1516+
}
14841517
}

src/properties/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub mod border_image;
1111
pub mod border_radius;
1212
pub mod transition;
1313
pub mod animation;
14+
pub mod transform;
1415

1516
use cssparser::*;
1617
use custom::*;
@@ -25,6 +26,7 @@ use border_image::*;
2526
use border_radius::*;
2627
use transition::*;
2728
use animation::*;
29+
use transform::*;
2830
use crate::values::{image::*, length::*, rect::*, color::*, time::Time, ident::CustomIdent, easing::EasingFunction};
2931
use crate::traits::{Parse, ToCss};
3032
use crate::printer::Printer;
@@ -250,7 +252,9 @@ pub enum Property {
250252
AnimationPlayState(SmallVec<[AnimationPlayState; 1]>),
251253
AnimationDelay(SmallVec<[Time; 1]>),
252254
AnimationFillMode(SmallVec<[AnimationFillMode; 1]>),
253-
Animation(SmallVec<[Animation; 1]>)
255+
Animation(SmallVec<[Animation; 1]>),
256+
257+
Transform(TransformList)
254258
}
255259

256260
impl Property {
@@ -475,6 +479,7 @@ impl Property {
475479
"animation-delay" => property!(AnimationDelay, Time, true),
476480
"animation-fill-mode" => property!(AnimationFillMode, AnimationFillMode, true),
477481
"animation" => property!(Animation, Animation, true),
482+
"transform" => property!(Transform, TransformList),
478483
_ => {}
479484
}
480485

@@ -688,6 +693,7 @@ impl Property {
688693
AnimationDelay(val) => property!("animation-delay", val, true),
689694
AnimationFillMode(val) => property!("animation-fill-mode", val, true),
690695
Animation(val) => property!("animation", val, true),
696+
Transform(val) => property!("transform", val),
691697
Custom(custom) => {
692698
dest.write_str(custom.name.as_ref())?;
693699
dest.delim(':', false)?;

0 commit comments

Comments
 (0)