@@ -75,9 +75,14 @@ def setup
75
75
def scan_java_script encoder , code
76
76
if code && !code . empty?
77
77
@java_script_scanner ||= Scanners ::JavaScript . new '' , :keep_tokens => true
78
- # encoder.begin_group :inline
79
78
@java_script_scanner . tokenize code , :tokens => encoder
80
- # encoder.end_group :inline
79
+ end
80
+ end
81
+
82
+ def scan_css encoder , code
83
+ if code && !code . empty?
84
+ @css_scanner ||= Scanners ::CSS . new '' , :keep_tokens => true
85
+ @css_scanner . tokenize code , :tokens => encoder
81
86
end
82
87
end
83
88
@@ -110,7 +115,7 @@ def scan_tokens encoder, options
110
115
elsif match = scan ( /<\/ [-\w .:]*>?/m )
111
116
in_tag = nil
112
117
encoder . text_token match , :tag
113
- elsif match = scan ( /<(?:(script)|[-\w .:]+)(>)?/m )
118
+ elsif match = scan ( /<(?:(script|style )|[-\w .:]+)(>)?/m )
114
119
encoder . text_token match , :tag
115
120
in_tag = self [ 1 ]
116
121
if self [ 2 ]
@@ -206,19 +211,23 @@ def scan_tokens encoder, options
206
211
207
212
when :in_special_tag
208
213
case in_tag
209
- when 'script'
214
+ when 'script' , 'style'
210
215
encoder . text_token match , :space if match = scan ( /[ \t ]*\n / )
211
216
if scan ( /(\s *<!--)(?:(.*?)(-->)|(.*))/m )
212
217
code = self [ 2 ] || self [ 4 ]
213
218
closing = self [ 3 ]
214
219
encoder . text_token self [ 1 ] , :comment
215
220
else
216
- code = scan_until ( /(?=(?:\n \s *)?<\/ script >)|\z / )
221
+ code = scan_until ( /(?=(?:\n \s *)?<\/ #{ in_tag } >)|\z / )
217
222
closing = false
218
223
end
219
224
unless code . empty?
220
225
encoder . begin_group :inline
221
- scan_java_script encoder , code
226
+ if in_tag == 'script'
227
+ scan_java_script encoder , code
228
+ else
229
+ scan_css encoder , code
230
+ end
222
231
encoder . end_group :inline
223
232
end
224
233
encoder . text_token closing , :comment if closing
0 commit comments