From c01464e4525cb8c7d4b9f000d8b76d72e8e7531a Mon Sep 17 00:00:00 2001 From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com> Date: Mon, 19 Dec 2022 10:53:29 +0300 Subject: [PATCH] feat(css/parser): Normalize URL functions (#6675) --- crates/swc_css_codegen/tests/fixture.rs | 6 ------ crates/swc_css_minifier/src/compressor/url.rs | 2 +- .../tests/fixture/compress-url/output.min.css | 2 +- crates/swc_css_parser/src/parser/values_and_units/mod.rs | 2 +- .../swc_css_parser/tests/fixture/at-rule/import/output.json | 2 +- .../swc_css_parser/tests/fixture/function/url/output.json | 2 +- crates/swc_css_parser/tests/fixture/value/url/output.json | 6 +++--- 7 files changed, 8 insertions(+), 14 deletions(-) diff --git a/crates/swc_css_codegen/tests/fixture.rs b/crates/swc_css_codegen/tests/fixture.rs index 4fd5a859e97d..9965716ecefa 100644 --- a/crates/swc_css_codegen/tests/fixture.rs +++ b/crates/swc_css_codegen/tests/fixture.rs @@ -300,12 +300,6 @@ impl VisitMut for NormalizeTest { n.name.value = n.name.value.to_lowercase().into(); } - fn visit_mut_url(&mut self, n: &mut Url) { - n.visit_mut_children_with(self); - - n.name.value = n.name.value.to_lowercase().into(); - } - fn visit_mut_pseudo_class_selector(&mut self, n: &mut PseudoClassSelector) { n.visit_mut_children_with(self); diff --git a/crates/swc_css_minifier/src/compressor/url.rs b/crates/swc_css_minifier/src/compressor/url.rs index 9dbddc670350..6a5135d45b91 100644 --- a/crates/swc_css_minifier/src/compressor/url.rs +++ b/crates/swc_css_minifier/src/compressor/url.rs @@ -5,7 +5,7 @@ use super::Compressor; impl Compressor { pub(super) fn compress_url(&self, url: &mut Url) { - if !url.name.value.eq_ignore_ascii_case(&js_word!("url")) { + if url.name.value != js_word!("url") { return; } diff --git a/crates/swc_css_minifier/tests/fixture/compress-url/output.min.css b/crates/swc_css_minifier/tests/fixture/compress-url/output.min.css index 57935ee8ddcb..6855232bc10e 100644 --- a/crates/swc_css_minifier/tests/fixture/compress-url/output.min.css +++ b/crates/swc_css_minifier/tests/fixture/compress-url/output.min.css @@ -1 +1 @@ -@namespace islands url(http://bar.yandex.ru/ui/islands);@namespace islands url(http://bar.yandex.ru/ui/islands);.class1{background:url(https://example.com/image.png)}.class2{background:url(image.png)}.class3{background:url(image.png)}.class4{background:url(image.png)}.class5{background:src("image.png")}.class6,.class7{background:url()}.class8{background:url()}.class9{background:url(image\(.png)}.class10{background:url(image\).png)}.class11{background:url(image\ image.png)}.class12{background:url(image\'image.png)}.class13{background:url(image\"image.png)}.class14{background:url(image.png)}.class16{background:url("image.png"param(var(--foo)))}.class17{background:url("http://website.com/assets_(test).png")}.class18{background:url(test.svg#icon)}.class19{background:url("image.png"param(var(--url,url(image.png))))}.class20{background:src(var(--url))}.class21{background:url(image.png)} +@namespace islands url(http://bar.yandex.ru/ui/islands);@namespace islands url(http://bar.yandex.ru/ui/islands);.class1{background:url(https://example.com/image.png)}.class2,.class3{background:url(image.png)}.class4{background:url(image.png)}.class5{background:src("image.png")}.class6,.class7{background:url()}.class8{background:url()}.class9{background:url(image\(.png)}.class10{background:url(image\).png)}.class11{background:url(image\ image.png)}.class12{background:url(image\'image.png)}.class13{background:url(image\"image.png)}.class14{background:url(image.png)}.class16{background:url("image.png"param(var(--foo)))}.class17{background:url("http://website.com/assets_(test).png")}.class18{background:url(test.svg#icon)}.class19{background:url("image.png"param(var(--url,url(image.png))))}.class20{background:src(var(--url))}.class21{background:url(image.png)} diff --git a/crates/swc_css_parser/src/parser/values_and_units/mod.rs b/crates/swc_css_parser/src/parser/values_and_units/mod.rs index 877c08941e66..c88b2a0507a1 100644 --- a/crates/swc_css_parser/src/parser/values_and_units/mod.rs +++ b/crates/swc_css_parser/src/parser/values_and_units/mod.rs @@ -2576,7 +2576,7 @@ where let name = Ident { span: Span::new(span.lo, span.hi - BytePos(1), Default::default()), - value: function_name, + value: function_name.to_ascii_lowercase(), raw: Some(raw_function_name), }; diff --git a/crates/swc_css_parser/tests/fixture/at-rule/import/output.json b/crates/swc_css_parser/tests/fixture/at-rule/import/output.json index 758018aeaf69..6635166ad75a 100644 --- a/crates/swc_css_parser/tests/fixture/at-rule/import/output.json +++ b/crates/swc_css_parser/tests/fixture/at-rule/import/output.json @@ -412,7 +412,7 @@ "end": 194, "ctxt": 0 }, - "value": "URL", + "value": "url", "raw": "URL" }, "value": { diff --git a/crates/swc_css_parser/tests/fixture/function/url/output.json b/crates/swc_css_parser/tests/fixture/function/url/output.json index c7a7d370cabb..83275e10329f 100644 --- a/crates/swc_css_parser/tests/fixture/function/url/output.json +++ b/crates/swc_css_parser/tests/fixture/function/url/output.json @@ -269,7 +269,7 @@ "end": 229, "ctxt": 0 }, - "value": "URL", + "value": "url", "raw": "URL" }, "value": { diff --git a/crates/swc_css_parser/tests/fixture/value/url/output.json b/crates/swc_css_parser/tests/fixture/value/url/output.json index d31c7707527d..e04ed1949976 100644 --- a/crates/swc_css_parser/tests/fixture/value/url/output.json +++ b/crates/swc_css_parser/tests/fixture/value/url/output.json @@ -369,7 +369,7 @@ "end": 291, "ctxt": 0 }, - "value": "URL", + "value": "url", "raw": "URL" }, "value": { @@ -419,7 +419,7 @@ "end": 346, "ctxt": 0 }, - "value": "URL", + "value": "url", "raw": "\\URL" }, "value": { @@ -1087,7 +1087,7 @@ "end": 948, "ctxt": 0 }, - "value": "SRC", + "value": "src", "raw": "SRC" }, "value": {