This is an automated email from the ASF dual-hosted git repository.

benw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git


The following commit(s) were added to refs/heads/master by this push:
     new 47a6e746f TAP5-2791: Fixing CssCompressor SVG data url handling
47a6e746f is described below

commit 47a6e746fd3a344fa088dbf676aaa8e75c467174
Author: Ben Weidig <b...@netzgut.net>
AuthorDate: Sun Nov 10 17:26:42 2024 +0100

    TAP5-2791: Fixing CssCompressor SVG data url handling
---
 .../apache/tapestry5/internal/webresources/CssCompressor.java  | 10 ++++++++--
 .../test/groovy/t5/webresources/tests/CssCompressorSpec.groovy |  1 +
 .../src/test/resources/t5/webresources/css/TAP5-2791.css       |  4 ++++
 .../src/test/resources/t5/webresources/css/TAP5-2791.css.min   |  1 +
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
 
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
index c50760958..ce803f202 100644
--- 
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
+++ 
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
@@ -134,8 +134,14 @@ public class CssCompressor {
 
             if (foundTerminator) {
                 String token = css.substring(startIndex, endIndex);
-                if (removeWhiteSpace)
-                    token = WHITESPACE.matcher(token).replaceAll("");
+                if (removeWhiteSpace) {
+                    if (token.indexOf("data:image/svg+xml") != -1) {
+                        token = token.trim();
+                    }
+                    else {
+                        token = WHITESPACE.matcher(token).replaceAll("");
+                    }
+                }
                 preservedTokens.add(token);
 
                 String preserver = preservedToken + "(___YUICSSMIN_PRESERVED_" 
+ preserverIdentifier + "_"
diff --git 
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
index 85d7e655f..6c29de79f 100644
--- 
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
+++ 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
@@ -32,6 +32,7 @@ class CssCompressorSpec extends Specification {
         'TAP5-2524' | 'minify CSS with keyframes'
         'TAP5-2600' | 'preserve 0s in transition'
         'TAP5-2753' | 'preserve space for calc operators'
+        'TAP5-2791' | 'data url svg whitespace'
     }
 
     /**
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css
new file mode 100644
index 000000000..11ae2074c
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css
@@ -0,0 +1,4 @@
+.some-class
+{
+    background-image: url('data:image/svg+xml;utf-8,<svg width="16" 
height="16" viewBox="0 0 24 24" fill="none" 
xmlns="http://www.w3.org/2000/svg";><path fill-rule="evenodd" 
clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 
5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 
20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 
20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 
5.10536 18 [...]
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
new file mode 100644
index 000000000..dfad87c03
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
@@ -0,0 +1 @@
+.some-class{background-image:url('data:image/svg+xml;utf-8,<svg width="16" 
height="16" viewBox="0 0 24 24" fill="none" 
xmlns="http://www.w3.org/2000/svg";><path fill-rule="evenodd" 
clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 
5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 
20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 
20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 
5.1 [...]
\ No newline at end of file

Reply via email to