summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/coderay/scanners/html.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/coderay/scanners/html.rb b/lib/coderay/scanners/html.rb
index 3ba3b79..fcf249a 100644
--- a/lib/coderay/scanners/html.rb
+++ b/lib/coderay/scanners/html.rb
@@ -99,7 +99,17 @@ module Scanners
case state
when :initial
- if match = scan(/<!--(?:.*?-->|.*)/m)
+ if match = scan(/<!\[CDATA\[/)
+ encoder.begin_group :string
+ encoder.text_token match, :delimiter
+ if match = scan(/.*?\]\]>/m)
+ encoder.text_token match[0..-4], :content
+ encoder.text_token ']]>', :delimiter
+ else
+ encoder.text_token scan(/.*/m), :error
+ end
+ encoder.end_group :string
+ elsif match = scan(/<!--(?:.*?-->|.*)/m)
encoder.text_token match, :comment
elsif match = scan(/<!(\w+)(?:.*?>|.*)|\]>/m)
encoder.text_token match, :doctype