tailwind_css_fixes/modules/transforms/scale/
mod.rs

1use super::*;
2
3#[doc=include_str!("readme.md")]
4#[derive(Clone, Debug)]
5pub struct TailwindScale {
6    kind: NumericValue,
7    axis: AxisXY,
8}
9impl Display for TailwindScale {
10    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
11        self.kind.write_negative(f)?;
12        match self.axis {
13            AxisXY::N => write!(f, "scale-{}", self.kind),
14            AxisXY::X => write!(f, "scale-x-{}", self.kind),
15            AxisXY::Y => write!(f, "scale-y-{}", self.kind),
16        }
17    }
18}
19
20impl TailwindInstance for TailwindScale {
21    fn attributes(&self, _: &TailwindBuilder) -> CssAttributes {
22        let scale = self.kind.get_properties(|f| (f / 100.0).to_string());
23        let transform = match self.axis {
24            AxisXY::N => format!("scale({})", scale),
25            AxisXY::X => format!("scaleX({})", scale),
26            AxisXY::Y => format!("scaleY({})", scale),
27        };
28        css_attributes! {
29            "transform" => transform,
30        }
31    }
32}
33
34// noinspection DuplicatedCode
35impl TailwindScale {
36    // https://tailwindcss.com/docs/scale
37    pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary, negative: Negative) -> Result<Self> {
38        let (axis, rest) = AxisXY::split_xyn(pattern);
39        let kind = NumericValue::negative_parser("scale", |_| false)(rest, arbitrary, negative)?;
40        Ok(TailwindScale { kind, axis })
41    }
42}