1- use crate :: constant:: OPTIMIZE_MULTI_CSS_VALUE_PROPERTY ;
1+ use crate :: constant:: { CHECK_QUOTES_RE , CSS_FUNCTION_RE , OPTIMIZE_MULTI_CSS_VALUE_PROPERTY } ;
22
33pub fn optimize_mutli_css_value ( value : & str ) -> String {
44 value
@@ -12,7 +12,7 @@ pub fn optimize_mutli_css_value(value: &str) -> String {
1212 } else {
1313 s. to_string ( )
1414 } ;
15- if s . contains ( " " ) {
15+ if CHECK_QUOTES_RE . is_match ( & s ) && ! CSS_FUNCTION_RE . is_match ( & s ) {
1616 format ! ( "\" {s}\" " )
1717 } else {
1818 s
@@ -22,6 +22,14 @@ pub fn optimize_mutli_css_value(value: &str) -> String {
2222 . join ( "," )
2323}
2424
25+ pub fn wrap_url ( s : & str ) -> String {
26+ if CSS_FUNCTION_RE . is_match ( s) {
27+ s. to_string ( )
28+ } else {
29+ format ! ( "url({s})" )
30+ }
31+ }
32+
2533pub fn check_multi_css_optimize ( property : & str ) -> bool {
2634 OPTIMIZE_MULTI_CSS_VALUE_PROPERTY . contains ( property)
2735}
@@ -49,6 +57,8 @@ mod tests {
4957 #[ case( "'A B', 'C D', E" , "\" A B\" ,\" C D\" ,E" ) ]
5058 #[ case( "A,B,C" , "A,B,C" ) ]
5159 #[ case( "A, B, C" , "A,B,C" ) ]
60+ #[ case( "url(abc)" , "url(abc)" ) ]
61+ #[ case( "url(\" a bc\" )" , "url(\" a bc\" )" ) ]
5262 #[ case( "'A', 'B', 'C'" , "A,B,C" ) ]
5363 #[ case( "\" A\" , \" B\" , \" C\" " , "A,B,C" ) ]
5464 fn test_optimize_mutli_css_value ( #[ case] input : & str , #[ case] expected : & str ) {
@@ -66,4 +76,25 @@ mod tests {
6676 fn test_check_multi_css_optimize ( #[ case] property : & str , #[ case] expected : bool ) {
6777 assert_eq ! ( check_multi_css_optimize( property) , expected) ;
6878 }
79+
80+ #[ rstest]
81+ #[ case( "url('/fonts/Roboto-Regular.ttf')" , "url('/fonts/Roboto-Regular.ttf')" ) ]
82+ #[ case(
83+ "url(\" /fonts/Roboto-Regular.ttf\" )" ,
84+ "url(\" /fonts/Roboto-Regular.ttf\" )"
85+ ) ]
86+ #[ case( "//fonts/Roboto-Regular.ttf" , "url(//fonts/Roboto-Regular.ttf)" ) ]
87+ #[ case( "fonts/Roboto-Regular.ttf" , "url(fonts/Roboto-Regular.ttf)" ) ]
88+ #[ case(
89+ "local('fonts/Roboto Regular.ttf')" ,
90+ "local('fonts/Roboto Regular.ttf')"
91+ ) ]
92+ #[ case( "(hello)" , "url(\" (hello)\" )" ) ]
93+ #[ case( "(hello world)" , "url(\" (hello world)\" )" ) ]
94+ fn test_wrap_url ( #[ case] input : & str , #[ case] expected : & str ) {
95+ assert_eq ! (
96+ super :: wrap_url( & super :: optimize_mutli_css_value( input) ) ,
97+ expected
98+ ) ;
99+ }
69100}
0 commit comments