swc_css_minifier/compressor/
alpha_value.rs1use 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}