swc_css_minifier/compressor/
alpha_value.rs

1use swc_common::DUMMY_SP;
2use swc_css_ast::*;
3
4use super::Compressor;
5
6pub(super) fn compress_alpha_value(alpha_value: &mut AlphaValue) {
7    match alpha_value {
8        AlphaValue::Percentage(Percentage {
9            value: number,
10            span,
11            ..
12        }) if number.value % 10.0 == 0.0 => {
13            let new_value = number.value / 100.0;
14
15            *alpha_value = AlphaValue::Number(Number {
16                span: *span,
17                value: new_value,
18                raw: None,
19            });
20        }
21        AlphaValue::Number(Number { value, span, .. }) if *value < 0.1 && *value != 0.0 => {
22            let new_value = *value * 100.0;
23
24            *alpha_value = AlphaValue::Percentage(Percentage {
25                span: *span,
26                value: Number {
27                    span: DUMMY_SP,
28                    value: new_value,
29                    raw: None,
30                },
31            });
32        }
33        _ => {}
34    }
35}
36
37impl Compressor {
38    pub(super) fn compress_alpha_value(&mut self, alpha_value: &mut AlphaValue) {
39        compress_alpha_value(alpha_value);
40    }
41
42    pub(super) fn compress_alpha_value_in_component_value(
43        &mut self,
44        component_value: &mut ComponentValue,
45    ) {
46        if self.ctx.preserve_alpha_value {
47            return;
48        }
49
50        match component_value {
51            ComponentValue::Percentage(percentage) if percentage.value.value % 10.0 == 0.0 => {
52                let new_value = percentage.value.value / 100.0;
53
54                *component_value = ComponentValue::Number(Box::new(Number {
55                    span: percentage.span,
56                    value: new_value,
57                    raw: None,
58                }));
59            }
60            _ => {}
61        }
62    }
63}