swc_css_minifier/compressor/math/
mod.rs1use swc_css_ast::*;
2
3pub fn is_calc_function_name(function_name: &FunctionName) -> bool {
4 *function_name == "calc" || *function_name == "-webkit-calc" || *function_name == "-moz-calc"
5}
6
7pub fn transform_calc_value_into_component_value(calc_value: &CalcValue) -> Option<ComponentValue> {
8 match &calc_value {
9 CalcValue::Number(n) => Some(ComponentValue::Number(Box::new(n.clone()))),
10 CalcValue::Dimension(Dimension::Length(l)) => Some(ComponentValue::Dimension(Box::new(
11 Dimension::Length(Length {
12 span: l.span,
13 value: l.value.clone(),
14 unit: l.unit.clone(),
15 }),
16 ))),
17 CalcValue::Dimension(Dimension::Angle(a)) => Some(ComponentValue::Dimension(Box::new(
18 Dimension::Angle(Angle {
19 span: a.span,
20 value: a.value.clone(),
21 unit: a.unit.clone(),
22 }),
23 ))),
24 CalcValue::Dimension(Dimension::Time(t)) => {
25 Some(ComponentValue::Dimension(Box::new(Dimension::Time(Time {
26 span: t.span,
27 value: t.value.clone(),
28 unit: t.unit.clone(),
29 }))))
30 }
31 CalcValue::Dimension(Dimension::Frequency(f)) => Some(ComponentValue::Dimension(Box::new(
32 Dimension::Frequency(Frequency {
33 span: f.span,
34 value: f.value.clone(),
35 unit: f.unit.clone(),
36 }),
37 ))),
38 CalcValue::Dimension(Dimension::Resolution(r)) => Some(ComponentValue::Dimension(
39 Box::new(Dimension::Resolution(Resolution {
40 span: r.span,
41 value: r.value.clone(),
42 unit: r.unit.clone(),
43 })),
44 )),
45 CalcValue::Dimension(Dimension::Flex(f)) => {
46 Some(ComponentValue::Dimension(Box::new(Dimension::Flex(Flex {
47 span: f.span,
48 value: f.value.clone(),
49 unit: f.unit.clone(),
50 }))))
51 }
52 CalcValue::Dimension(Dimension::UnknownDimension(u)) => Some(ComponentValue::Dimension(
53 Box::new(Dimension::UnknownDimension(UnknownDimension {
54 span: u.span,
55 value: u.value.clone(),
56 unit: u.unit.clone(),
57 })),
58 )),
59 CalcValue::Percentage(p) => Some(ComponentValue::Percentage(Box::new(Percentage {
60 span: p.span,
61 value: p.value.clone(),
62 }))),
63 CalcValue::Function(f) => Some(ComponentValue::Function(Box::new(Function {
64 span: f.span,
65 name: f.name.clone(),
66 value: f.value.to_vec(),
67 }))),
68 CalcValue::Constant(_) => {
69 None
73 }
74 CalcValue::Sum(_) => {
75 None
77 }
78 }
79}