swc_css_minifier/compressor/
url.rs

1use swc_css_ast::*;
2
3use super::Compressor;
4
5impl Compressor {
6    pub(super) fn compress_url(&self, url: &mut Url) {
7        if url.name.value != "url" {
8            return;
9        }
10
11        if let Some(modifiers) = &url.modifiers {
12            if !modifiers.is_empty() {
13                return;
14            }
15        }
16
17        if let Some(UrlValue::Str(Str { value, span, .. })) = url.value.as_deref() {
18            let mut counter = 0;
19
20            for c in value.chars() {
21                if counter == 2 {
22                    return;
23                }
24
25                match c {
26                    '(' | ')' | '"' | '\'' => {
27                        counter += 1;
28                    }
29                    _ if c.is_whitespace() => {
30                        counter += 1;
31                    }
32                    _ => {}
33                }
34            }
35
36            url.value = Some(Box::new(UrlValue::Raw(UrlValueRaw {
37                span: *span,
38                value: value.clone(),
39                raw: None,
40            })));
41        }
42    }
43}