8000 scan_css in HTML scanner (tags) · tricknotes/coderay@5b0dc0f · GitHub
[go: up one dir, main page]

Skip to content

Commit 5b0dc0f

Browse files
committed
scan_css in HTML scanner (tags)
1 parent 1e330f1 commit 5b0dc0f

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

lib/coderay/scanners/html.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,14 @@ def setup
7575
def scan_java_script encoder, code
7676
if code && !code.empty?
7777
@java_script_scanner ||= Scanners::JavaScript.new '', :keep_tokens => true
78-
# encoder.begin_group :inline
7978
@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
8186
end
8287
end
8388

@@ -110,7 +115,7 @@ def scan_tokens encoder, options
110115
elsif match = scan(/<\/[-\w.:]*>?/m)
111116
in_tag = nil
112117
encoder.text_token match, :tag
113-
elsif match = scan(/<(?:(script)|[-\w.:]+)(>)?/m)
118+
elsif match = scan(/<(?:(script|style)|[-\w.:]+)(>)?/m)
114119
encoder.text_token match, :tag
115120
in_tag = self[1]
116121
if self[2]
@@ -206,19 +211,23 @@ def scan_tokens encoder, options
206211

207212
when :in_special_tag
208213
case in_tag
209-
when 'script'
214+
when 'script', 'style'
210215
encoder.text_token match, :space if match = scan(/[ \t]*\n/)
211216
if scan(/(\s*<!--)(?:(.*?)(-->)|(.*))/m)
212217
code = self[2] || self[4]
213218
closing = self[3]
214219
encoder.text_token self[1], :comment
215220
else
216-
code = scan_until(/(?=(?:\n\s*)?<\/script>)|\z/)
221+
code = scan_until(/(?=(?:\n\s*)?<\/#{in_tag}>)|\z/)
217222
closing = false
218223
end
219224
unless code.empty?
220225
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
222231
encoder.end_group :inline
223232
end
224233
encoder.text_token closing, :comment if closing

0 commit comments

Comments
 (0)
0