From fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9 Mon Sep 17 00:00:00 2001 From: Steve Clay Date: Thu, 3 Apr 2014 19:52:23 -0400 Subject: [PATCH] Fixes #97: URIs with spaces are correctly rewritten --- min/lib/Minify/CSS/UriRewriter.php | 4 ++-- min_unit_tests/_test_files/css_uriRewriter/exp.css | 3 +++ min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css | 3 +++ min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css | 3 +++ min_unit_tests/_test_files/css_uriRewriter/in.css | 3 +++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/min/lib/Minify/CSS/UriRewriter.php b/min/lib/Minify/CSS/UriRewriter.php index 50360ce..43cc254 100644 --- a/min/lib/Minify/CSS/UriRewriter.php +++ b/min/lib/Minify/CSS/UriRewriter.php @@ -70,7 +70,7 @@ class Minify_CSS_UriRewriter { // rewrite $css = preg_replace_callback('/@import\\s+([\'"])(.*?)[\'"]/' ,array(self::$className, '_processUriCB'), $css); - $css = preg_replace_callback('/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + $css = preg_replace_callback('/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/' ,array(self::$className, '_processUriCB'), $css); return $css; @@ -94,7 +94,7 @@ class Minify_CSS_UriRewriter { // append $css = preg_replace_callback('/@import\\s+([\'"])(.*?)[\'"]/' ,array(self::$className, '_processUriCB'), $css); - $css = preg_replace_callback('/url\\(\\s*([^\\)\\s]+)\\s*\\)/' + $css = preg_replace_callback('/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/' ,array(self::$className, '_processUriCB'), $css); self::$_prependPath = null; diff --git a/min_unit_tests/_test_files/css_uriRewriter/exp.css b/min_unit_tests/_test_files/css_uriRewriter/exp.css index bd6d69e..22c109f 100644 --- a/min_unit_tests/_test_files/css_uriRewriter/exp.css +++ b/min_unit_tests/_test_files/css_uriRewriter/exp.css @@ -12,3 +12,6 @@ foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')} foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ foo {background:url(foo:bar);} /* scheme, should not alter */ +foo {background:url("/_test_files/css_uriRewriter/foo bar.jpg");} +@import url('/_test_files/css_uriRewriter/foo bar.css'); +@import "/_test_files/css_uriRewriter/foo bar.css"; diff --git a/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css b/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css index d00cd35..ce31df1 100644 --- a/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css +++ b/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css @@ -12,3 +12,6 @@ foo {background:url('http://cnd.com/A/B/bar/foo.png')} foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ foo {background:url(foo:bar);} /* scheme, should not alter */ +foo {background:url("http://cnd.com/A/B/foo bar.jpg");} +@import url('http://cnd.com/A/B/foo bar.css'); +@import "http://cnd.com/A/B/foo bar.css"; diff --git a/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css b/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css index 55badf5..087d94d 100644 --- a/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css +++ b/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css @@ -12,3 +12,6 @@ foo {background:url('//cnd.com/A/B/bar/foo.png')} foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ foo {background:url(foo:bar);} /* scheme, should not alter */ +foo {background:url("//cnd.com/A/B/foo bar.jpg");} +@import url('//cnd.com/A/B/foo bar.css'); +@import "//cnd.com/A/B/foo bar.css"; diff --git a/min_unit_tests/_test_files/css_uriRewriter/in.css b/min_unit_tests/_test_files/css_uriRewriter/in.css index 3497b87..3bdce36 100644 --- a/min_unit_tests/_test_files/css_uriRewriter/in.css +++ b/min_unit_tests/_test_files/css_uriRewriter/in.css @@ -12,3 +12,6 @@ foo {background:url('bar/foo.png')} foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ foo {background:url(foo:bar);} /* scheme, should not alter */ +foo {background:url("foo bar.jpg");} +@import url('foo bar.css'); +@import "foo bar.css";