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        match &self.axis {
12            AxisXY::N => self.kind.write_class_name(f, "scale-"),
13            AxisXY::X => self.kind.write_class_name(f, "scale-x-"),
14            AxisXY::Y => self.kind.write_class_name(f, "scale-y-"),
15        }
16    }
17}
18
19impl TailwindInstance for TailwindScale {
20    fn attributes(&self, _: &TailwindBuilder) -> CssAttributes {
21        let scale = self.kind.get_properties(|f| (f/100.0).to_string());
22        let transform = match self.axis {
23            AxisXY::N => format!("scale({})", scale),
24            AxisXY::X => format!("scaleX({})", scale),
25            AxisXY::Y => format!("scaleY({})", scale),
26        };
27        css_attributes! {
28            "transform" => transform,
29        }
30    }
31}
32
33// noinspection DuplicatedCode
34impl TailwindScale {
35    // https://tailwindcss.com/docs/scale
36    pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary, negative: Negative) -> Result<Self> {
37        let (axis, rest) = AxisXY::split_xyn(pattern);
38        let kind = NumericValue::negative_parser("scale", |_| false)(rest, arbitrary, negative)?;
39        Ok(TailwindScale { kind, axis })
40    }
41}