@@ -10,6 +10,9 @@ class CssStore
1010 /** @var array Property objects, grouped by selector */
1111 private $ styles = [];
1212
13+ /** @var string|null */
14+ private $ charset ;
15+
1316 public function addCssStyles ($ cssRules )
1417 {
1518 $ this ->styles = array_merge ($ this ->styles , $ cssRules );
@@ -38,19 +41,20 @@ public function compileStyles()
3841 $ styles = $ this ->prepareStylesForProcessing ();
3942
4043
44+ $ prefix = is_null ($ this ->charset ) ? '' : $ this ->charset ;
4145
42- return join (
43- '' ,
44- array_map (
45- function ($ styleGroup ) {
46- $ media = key ($ styleGroup );
47- $ rules = reset ($ styleGroup );
46+ return $ prefix . join (
47+ '' ,
48+ array_map (
49+ function ($ styleGroup ) {
50+ $ media = key ($ styleGroup );
51+ $ rules = reset ($ styleGroup );
4852
49- return $ this ->parseMediaToString ($ media , $ rules );
50- },
51- $ styles
52- )
53- );
53+ return $ this ->parseMediaToString ($ media , $ rules );
54+ },
55+ $ styles
56+ )
57+ );
5458 }
5559
5660 /**
@@ -68,8 +72,7 @@ private function parseMediaToString($media, array $rules)
6872 join (
6973 '' ,
7074 array_map (
71- function ($ rule ) {
72- /** @var Rule $rule */
75+ function (Rule $ rule ) {
7376 return $ this ->parsePropertiesToString ($ rule ->getSelector (), $ rule ->getProperties ());
7477 },
7578 $ rules
@@ -78,16 +81,15 @@ function ($rule) {
7881
7982 }
8083
81- return "$ media { " . join (
84+ return "$ media { " . join (
8285 '' ,
8386 array_map (
84- function ($ rule ) {
85- /** @var Rule $rule */
87+ function (Rule $ rule ) {
8688 return $ this ->parsePropertiesToString ($ rule ->getSelector (), $ rule ->getProperties ());
8789 },
8890 $ rules
8991 )
90- ). "} " ;
92+ ) . "} " ;
9193
9294
9395 }
@@ -101,16 +103,18 @@ function ($rule) {
101103 */
102104 private function parsePropertiesToString ($ selector , array $ properties )
103105 {
104- return "$ selector { " .
106+ $ selector = mb_convert_encoding ($ selector , 'unicode ' );
107+
108+ return "$ selector { " .
105109 join (
106110 '' ,
107111 array_map (
108112 function (Property $ property ) {
109- return $ property ->getName (). ': ' . $ property ->getValue (). '; ' ;
113+ return mb_convert_encoding ( $ property ->getName (), ' unicode ' ) . ': ' . mb_convert_encoding ( $ property ->getValue (), ' unicode ' ) . '; ' ;
110114 },
111115 $ properties
112116 )
113- ).
117+ ) .
114118 "} " ;
115119 }
116120
@@ -127,4 +131,10 @@ private function prepareStylesForProcessing()
127131
128132 return $ groupedStyles ;
129133 }
134+
135+ public function setCharset ($ charset )
136+ {
137+ $ this ->charset = $ charset ;
138+
139+ }
130140}
0 commit comments