@@ -10,6 +10,9 @@ class CssStore
10
10
/** @var array Property objects, grouped by selector */
11
11
private $ styles = [];
12
12
13
+ /** @var string|null */
14
+ private $ charset ;
15
+
13
16
public function addCssStyles ($ cssRules )
14
17
{
15
18
$ this ->styles = array_merge ($ this ->styles , $ cssRules );
@@ -38,19 +41,20 @@ public function compileStyles()
38
41
$ styles = $ this ->prepareStylesForProcessing ();
39
42
40
43
44
+ $ prefix = is_null ($ this ->charset ) ? '' : $ this ->charset ;
41
45
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 );
48
52
49
- return $ this ->parseMediaToString ($ media , $ rules );
50
- },
51
- $ styles
52
- )
53
- );
53
+ return $ this ->parseMediaToString ($ media , $ rules );
54
+ },
55
+ $ styles
56
+ )
57
+ );
54
58
}
55
59
56
60
/**
@@ -68,8 +72,7 @@ private function parseMediaToString($media, array $rules)
68
72
join (
69
73
'' ,
70
74
array_map (
71
- function ($ rule ) {
72
- /** @var Rule $rule */
75
+ function (Rule $ rule ) {
73
76
return $ this ->parsePropertiesToString ($ rule ->getSelector (), $ rule ->getProperties ());
74
77
},
75
78
$ rules
@@ -78,16 +81,15 @@ function ($rule) {
78
81
79
82
}
80
83
81
- return "$ media { " . join (
84
+ return "$ media { " . join (
82
85
'' ,
83
86
array_map (
84
- function ($ rule ) {
85
- /** @var Rule $rule */
87
+ function (Rule $ rule ) {
86
88
return $ this ->parsePropertiesToString ($ rule ->getSelector (), $ rule ->getProperties ());
87
89
},
88
90
$ rules
89
91
)
90
- ). "} " ;
92
+ ) . "} " ;
91
93
92
94
93
95
}
@@ -101,16 +103,18 @@ function ($rule) {
101
103
*/
102
104
private function parsePropertiesToString ($ selector , array $ properties )
103
105
{
104
- return "$ selector { " .
106
+ $ selector = mb_convert_encoding ($ selector , 'unicode ' );
107
+
108
+ return "$ selector { " .
105
109
join (
106
110
'' ,
107
111
array_map (
108
112
function (Property $ property ) {
109
- return $ property ->getName (). ': ' . $ property ->getValue (). '; ' ;
113
+ return mb_convert_encoding ( $ property ->getName (), ' unicode ' ) . ': ' . mb_convert_encoding ( $ property ->getValue (), ' unicode ' ) . '; ' ;
110
114
},
111
115
$ properties
112
116
)
113
- ).
117
+ ) .
114
118
"} " ;
115
119
}
116
120
@@ -127,4 +131,10 @@ private function prepareStylesForProcessing()
127
131
128
132
return $ groupedStyles ;
129
133
}
134
+
135
+ public function setCharset ($ charset )
136
+ {
137
+ $ this ->charset = $ charset ;
138
+
139
+ }
130
140
}
0 commit comments