summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2007-01-01 03:03:04 +0000
committermurphy <murphy@rubychan.de>2007-01-01 03:03:04 +0000
commit74c9a0d2b32e45c0692b4cdad4eddcab1e6a74e3 (patch)
tree59d2395fcfb0033dad16ed73780c20351a07379e
parent9b2710502466667dde1a9d6ce22d952ae8ad4dc7 (diff)
downloadcoderay-74c9a0d2b32e45c0692b4cdad4eddcab1e6a74e3.tar.gz
Added tests for debug scanner and another ruby test case.
Added drafts for a comparison of CodeRa an Pygments features.
-rw-r--r--etc/language_report.textile59
-rw-r--r--etc/output_report.textile34
-rw-r--r--test/scanners/debug/class.actual.html138
-rw-r--r--test/scanners/debug/class.expected.raydebug14
-rw-r--r--test/scanners/debug/class.in.raydebug14
-rw-r--r--test/scanners/debug/kate.actual.html200
-rw-r--r--test/scanners/debug/kate.expected.raydebug76
-rw-r--r--test/scanners/debug/kate.in.raydebug76
-rw-r--r--test/scanners/debug/suite.rb3
-rw-r--r--test/scanners/ruby/nested-heredoc.expected.raydebug27
-rwxr-xr-xtest/scanners/ruby/nested-heredoc.in.rb27
11 files changed, 668 insertions, 0 deletions
diff --git a/etc/language_report.textile b/etc/language_report.textile
new file mode 100644
index 0000000..d79ed10
--- /dev/null
+++ b/etc/language_report.textile
@@ -0,0 +1,59 @@
+h1. CodeRay Missing Languages Report
+
+This is a list of input formats for highlighters, comparing Pygments with
+CodeRay.
+
+h2. Lexers / Scanners
+
+h3. Supported by both
+
+* C
+* Delphi/Pascal
+* HTML
+* RHTML
+* Ruby
+* XML
+
+h3. Only in CodeRay
+
+* Raydebug
+* Nitro-XHTML
+
+h3. Only in Pygments, but soon in CodeRay
+
+* JavaScript
+* CSS
+* PHP
+* Diff
+* SQL
+
+h3. Soon only in CodeRay
+
+* IO
+* YAML
+
+h3. Only in Pygments
+
+* Boo
+* Brainfuck
+* C++
+* C#
+* Smarty
+* Django
+* Ini
+* IRC
+* Lua
+* Makefile
+* Perl
+* Python
+* VisualBasic
+* TeX
+* Python Console (pycon)
+* Ruby Console (irb)
+
+h3. Missing totally
+
+* Haskell
+* BBCode
+* Wikicode
+* JSON \ No newline at end of file
diff --git a/etc/output_report.textile b/etc/output_report.textile
new file mode 100644
index 0000000..2d8d5a2
--- /dev/null
+++ b/etc/output_report.textile
@@ -0,0 +1,34 @@
+h1. CodeRay Missing Outputs Report
+
+This is a list of output formats for highlighters, comparing Pygments with
+CodeRay.
+
+h2. Formatters / Encoders
+
+h3. Supported by both
+
+* HTML
+* Tokens (named raw in Pygments, raydebug or debug in CodeRay)
+* Text
+
+h3. Only in CodeRay
+
+* Statistic and Counter
+* Span, Div, Page (HTML variants)
+* XML
+* YAML
+
+h3. Only in Pygments, but soon in CodeRay
+
+h3. Soon only in CodeRay
+
+h3. Only in Pygments
+
+* LaTeX
+* ANSI Console (very useful!)
+* BBCode
+
+h3. Missing totally
+
+* PDF
+* RTF (do we need this?) \ No newline at end of file
diff --git a/test/scanners/debug/class.actual.html b/test/scanners/debug/class.actual.html
new file mode 100644
index 0000000..1b55223
--- /dev/null
+++ b/test/scanners/debug/class.actual.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>CodeRay HTML Encoder Example</title>
+ <style type="text/css">
+.CodeRay {
+ background-color: #f8f8f8;
+ border: 1px solid silver;
+ font-family: 'Courier New', 'Terminal', monospace;
+ color: #100;
+}
+.CodeRay pre { margin: 0px }
+
+div.CodeRay { }
+
+span.CodeRay { white-space: pre; border: 0px; padding: 2px }
+
+table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
+table.CodeRay td { padding: 2px 4px; vertical-align: top }
+
+.CodeRay .line_numbers, .CodeRay .no {
+ background-color: #def;
+ color: gray;
+ text-align: right;
+}
+.CodeRay .line_numbers tt { font-weight: bold }
+.CodeRay .no { padding: 0px 4px }
+.CodeRay .code { width: 100% }
+
+ol.CodeRay { font-size: 10pt }
+ol.CodeRay li { white-space: pre }
+
+.CodeRay .code pre { overflow: auto }
+
+.CodeRay .debug { color:white ! important; background:blue ! important; }
+
+.CodeRay .af { color:#00C }
+.CodeRay .an { color:#007 }
+.CodeRay .av { color:#700 }
+.CodeRay .aw { color:#C00 }
+.CodeRay .bi { color:#509; font-weight:bold }
+.CodeRay .c { color:#888 }
+
+.CodeRay .ch { color:#04D }
+.CodeRay .ch .k { color:#04D }
+.CodeRay .ch .dl { color:#039 }
+
+.CodeRay .cl { color:#B06; font-weight:bold }
+.CodeRay .co { color:#036; font-weight:bold }
+.CodeRay .cr { color:#0A0 }
+.CodeRay .cv { color:#369 }
+.CodeRay .df { color:#099; font-weight:bold }
+.CodeRay .di { color:#088; font-weight:bold }
+.CodeRay .dl { color:black }
+.CodeRay .do { color:#970 }
+.CodeRay .ds { color:#D42; font-weight:bold }
+.CodeRay .e { color:#666; font-weight:bold }
+.CodeRay .en { color:#800; font-weight:bold }
+.CodeRay .er { color:#F00; background-color:#FAA }
+.CodeRay .ex { color:#F00; font-weight:bold }
+.CodeRay .fl { color:#60E; font-weight:bold }
+.CodeRay .fu { color:#06B; font-weight:bold }
+.CodeRay .gv { color:#d70; font-weight:bold }
+.CodeRay .hx { color:#058; font-weight:bold }
+.CodeRay .i { color:#00D; font-weight:bold }
+.CodeRay .ic { color:#B44; font-weight:bold }
+
+.CodeRay .il { background: #eee }
+.CodeRay .il .il { background: #ddd }
+.CodeRay .il .il .il { background: #ccc }
+.CodeRay .il .idl { font-weight: bold; color: #888 }
+
+.CodeRay .in { color:#B2B; font-weight:bold }
+.CodeRay .iv { color:#33B }
+.CodeRay .la { color:#970; font-weight:bold }
+.CodeRay .lv { color:#963 }
+.CodeRay .oc { color:#40E; font-weight:bold }
+.CodeRay .on { color:#000; font-weight:bold }
+.CodeRay .op { }
+.CodeRay .pc { color:#038; font-weight:bold }
+.CodeRay .pd { color:#369; font-weight:bold }
+.CodeRay .pp { color:#579 }
+.CodeRay .pt { color:#339; font-weight:bold }
+.CodeRay .r { color:#080; font-weight:bold }
+
+.CodeRay .rx { background-color:#fff0ff }
+.CodeRay .rx .k { color:#808 }
+.CodeRay .rx .dl { color:#404 }
+.CodeRay .rx .mod { color:#C2C }
+.CodeRay .rx .fu { color:#404; font-weight: bold }
+
+.CodeRay .s { background-color:#fff0f0 }
+.CodeRay .s .s { background-color:#ffe0e0 }
+.CodeRay .s .s .s { background-color:#ffd0d0 }
+.CodeRay .s .k { color:#D20 }
+.CodeRay .s .dl { color:#710 }
+
+.CodeRay .sh { background-color:#f0fff0 }
+.CodeRay .sh .k { color:#2B2 }
+.CodeRay .sh .dl { color:#161 }
+
+.CodeRay .sy { color:#A60 }
+.CodeRay .sy .k { color:#A60 }
+.CodeRay .sy .dl { color:#630 }
+
+.CodeRay .ta { color:#070 }
+.CodeRay .tf { color:#070; font-weight:bold }
+.CodeRay .ts { color:#D70; font-weight:bold }
+.CodeRay .ty { color:#339; font-weight:bold }
+.CodeRay .v { color:#036 }
+.CodeRay .xt { color:#444 }
+
+ </style>
+</head>
+<body style="background-color: white;">
+
+<div class="CodeRay">
+ <div class="code"><pre><span class="no"> 1</span> <span title="[:error]" class="er">3</span><span title="[:error]" class="er">7</span><span title="[:error]" class="er">,</span><span title="[:error]" class="er">3</span><span title="[:error]" class="er">8</span><span title="[:error]" class="er">c</span><span title="[:error]" class="er">3</span><span title="[:error]" class="er">7</span><span title="[:error]" class="er">,</span><span title="[:error]" class="er">3</span><span title="[:error]" class="er">8</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 2</span> </span><span title="[:error]" class="er">&lt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:reserved]" class="r">for</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">input</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:reserved]" class="r">in</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:constant]" class="co">Dir</span><span title="[:operator]" class="NO_HIGHLIGHT">[</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">*.</span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :delimiter]" class="dl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">extension</span><span title="[:string, :inline, :delimiter]" class="dl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:operator]" class="NO_HIGHLIGHT">]</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 3</span> </span><span title="[:error]" class="er">&lt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">name</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:constant]" class="co">File</span><span title="[:operator]" class="NO_HIGHLIGHT">.</span><span title="[:ident]" class="NO_HIGHLIGHT">basename</span><span title="[:operator]" class="NO_HIGHLIGHT">(</span><span title="[:ident]" class="NO_HIGHLIGHT">input</span><span title="[:operator]" class="NO_HIGHLIGHT">,</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">.</span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :delimiter]" class="dl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">extension</span><span title="[:string, :inline, :delimiter]" class="dl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:operator]" class="NO_HIGHLIGHT">)</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 4</span> </span><span title="[:error]" class="er">-</span><span title="[:error]" class="er">-</span><span title="[:error]" class="er">-</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 5</span> </span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:reserved]" class="r">for</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">input</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:reserved]" class="r">in</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:constant]" class="co">Dir</span><span title="[:operator]" class="NO_HIGHLIGHT">[</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">*.</span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :inline_delimiter]" class="idl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">extension</span><span title="[:string, :inline, :inline_delimiter]" class="idl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:operator]" class="NO_HIGHLIGHT">]</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 6</span> </span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">name</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:constant]" class="co">File</span><span title="[:operator]" class="NO_HIGHLIGHT">.</span><span title="[:ident]" class="NO_HIGHLIGHT">basename</span><span title="[:operator]" class="NO_HIGHLIGHT">(</span><span title="[:ident]" class="NO_HIGHLIGHT">input</span><span title="[:operator]" class="NO_HIGHLIGHT">,</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">.</span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :inline_delimiter]" class="idl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">extension</span><span title="[:string, :inline, :inline_delimiter]" class="idl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:operator]" class="NO_HIGHLIGHT">)</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 7</span> </span><span title="[:error]" class="er">4</span><span title="[:error]" class="er">9</span><span title="[:error]" class="er">c</span><span title="[:error]" class="er">4</span><span title="[:error]" class="er">9</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 8</span> </span><span title="[:error]" class="er">&lt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">puts</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">New test: </span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :delimiter]" class="dl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">output</span><span title="[:string, :inline, :delimiter]" class="dl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 9</span> </span><span title="[:error]" class="er">-</span><span title="[:error]" class="er">-</span><span title="[:error]" class="er">-</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>10</strong></span> </span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:ident]" class="NO_HIGHLIGHT">puts</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">New test: </span><span title="[:string, :inline]" class="il"><span title="[:string, :inline, :inline_delimiter]" class="idl">#{</span><span title="[:string, :inline, :ident]" class="NO_HIGHLIGHT">output</span><span title="[:string, :inline, :inline_delimiter]" class="idl">}</span></span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">11</span> </span><span title="[:error]" class="er">6</span><span title="[:error]" class="er">9</span><span title="[:error]" class="er">c</span><span title="[:error]" class="er">6</span><span title="[:error]" class="er">9</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">12</span> </span><span title="[:error]" class="er">&lt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:error]" class="er">!</span><span title="[:error]" class="er">!</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:error]" class="er">F</span><span title="[:error]" class="er">o</span><span title="[:error]" class="er">l</span><span title="[:error]" class="er">d</span><span title="[:error]" class="er">e</span><span title="[:error]" class="er">r</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:error]" class="er">)</span><span title="[:inline]" class="il"><span title="[:inline, :delimiter]" class="dl">#{</span><span title="[:inline, :constant]" class="co">File</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">.</span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">split</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">(</span><span title="[:inline, :pre_constant]" class="pc">__FILE__</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">)</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">.</span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">first</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">+</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :string]" class="s"><span title="[:inline, :string, :delimiter]" class="dl">'</span><span title="[:inline, :string, :content]" class="k">/</span><span title="[:inline, :string, :delimiter]" class="dl">'</span></span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">+</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">name</span><span title="[:inline, :delimiter]" class="dl">}</span></span><span title="[:content]" class="k"> not found
+<span class="no">13</span> ---
+<span class="no">14</span> &gt; !! Folder </span><span title="[:inline]" class="il"><span title="[:inline, :inline_delimiter]" class="idl">#{</span><span title="[:inline, :constant]" class="co">File</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">.</span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">split</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">(</span><span title="[:inline, :pre_constant]" class="pc">__FILE__</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">)</span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">.</span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">first</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">+</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :string]" class="s"><span title="[:inline, :string, :delimiter]" class="dl">'</span><span title="[:inline, :string, :content]" class="k">/</span><span title="[:inline, :string, :delimiter]" class="dl">'</span></span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :operator]" class="NO_HIGHLIGHT">+</span><span title="[:inline, :space]" class="NO_HIGHLIGHT"> </span><span title="[:inline, :ident]" class="NO_HIGHLIGHT">name</span><span title="[:inline, :inline_delimiter]" class="idl">}</span></span><span title="[:error]" class="er">c</span><span title="[:error]" class="er">o</span><span title="[:error]" class="er">n</span><span title="[:error]" class="er">t</span><span title="[:error]" class="er">e</span><span title="[:error]" class="er">n</span><span title="[:error]" class="er">t</span><span title="[:error]" class="er">(</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:error]" class="er">n</span><span title="[:error]" class="er">o</span><span title="[:error]" class="er">t</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:error]" class="er">f</span><span title="[:error]" class="er">o</span><span title="[:error]" class="er">u</span><span title="[:error]" class="er">n</span><span title="[:error]" class="er">d</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">15</span> </span></pre></div>
+</div>
+
+</body>
+</html>
diff --git a/test/scanners/debug/class.expected.raydebug b/test/scanners/debug/class.expected.raydebug
new file mode 100644
index 0000000..c0df683
--- /dev/null
+++ b/test/scanners/debug/class.expected.raydebug
@@ -0,0 +1,14 @@
+error(3)error(7)error(,)error(3)error(8)error(c)error(3)error(7)error(,)error(3)error(8)
+error(<) reserved(for) ident(input) reserved(in) constant(Dir)operator([)string<delimiter(")content(*.)inline<delimiter(#{)ident(extension)delimiter(})>delimiter(")>operator(])
+error(<) ident(name) operator(=) constant(File)operator(.)ident(basename)operator(()ident(input)operator(,) string<delimiter(")content(.)inline<delimiter(#{)ident(extension)delimiter(})>delimiter(")>operator(\))
+error(-)error(-)error(-)
+> reserved(for) ident(input) reserved(in) constant(Dir)operator([)string<delimiter(")content(*.)inline<inline_delimiter(#{)ident(extension)inline_delimiter(})>delimiter(")>operator(])
+> ident(name) operator(=) constant(File)operator(.)ident(basename)operator(()ident(input)operator(,) string<delimiter(")content(.)inline<inline_delimiter(#{)ident(extension)inline_delimiter(})>delimiter(")>operator(\))
+error(4)error(9)error(c)error(4)error(9)
+error(<) ident(puts) string<delimiter(")content(New test: )inline<delimiter(#{)ident(output)delimiter(})>delimiter(")>
+error(-)error(-)error(-)
+> ident(puts) string<delimiter(")content(New test: )inline<inline_delimiter(#{)ident(output)inline_delimiter(})>delimiter(")>
+error(6)error(9)error(c)error(6)error(9)
+error(<) error(!)error(!) error(F)error(o)error(l)error(d)error(e)error(r) error(\))inline<delimiter(#{)constant(File)operator(.)ident(split)operator(()pre_constant(__FILE__)operator(\))operator(.)ident(first) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(name)delimiter(})>content( not found
+---
+> !! Folder )inline<inline_delimiter(#{)constant(File)operator(.)ident(split)operator(()pre_constant(__FILE__)operator(\))operator(.)ident(first) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(name)inline_delimiter(})>error(c)error(o)error(n)error(t)error(e)error(n)error(t)error(() error(n)error(o)error(t) error(f)error(o)error(u)error(n)error(d)
diff --git a/test/scanners/debug/class.in.raydebug b/test/scanners/debug/class.in.raydebug
new file mode 100644
index 0000000..501c99f
--- /dev/null
+++ b/test/scanners/debug/class.in.raydebug
@@ -0,0 +1,14 @@
+37,38c37,38
+< reserved(for) ident(input) reserved(in) constant(Dir)operator([)string<delimiter(")content(*.)inline<delimiter(#{)ident(extension)delimiter(})>delimiter(")>operator(])
+< ident(name) operator(=) constant(File)operator(.)ident(basename)operator(()ident(input)operator(,) string<delimiter(")content(.)inline<delimiter(#{)ident(extension)delimiter(})>delimiter(")>operator(\))
+---
+> reserved(for) ident(input) reserved(in) constant(Dir)operator([)string<delimiter(")content(*.)inline<inline_delimiter(#{)ident(extension)inline_delimiter(})>delimiter(")>operator(])
+> ident(name) operator(=) constant(File)operator(.)ident(basename)operator(()ident(input)operator(,) string<delimiter(")content(.)inline<inline_delimiter(#{)ident(extension)inline_delimiter(})>delimiter(")>operator(\))
+49c49
+< ident(puts) string<delimiter(")content(New test: )inline<delimiter(#{)ident(output)delimiter(})>delimiter(")>
+---
+> ident(puts) string<delimiter(")content(New test: )inline<inline_delimiter(#{)ident(output)inline_delimiter(})>delimiter(")>
+69c69
+< !! Folder )inline<delimiter(#{)constant(File)operator(.)ident(split)operator(()pre_constant(__FILE__)operator(\))operator(.)ident(first) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(name)delimiter(})>content( not found
+---
+> !! Folder )inline<inline_delimiter(#{)constant(File)operator(.)ident(split)operator(()pre_constant(__FILE__)operator(\))operator(.)ident(first) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(name)inline_delimiter(})>content( not found
diff --git a/test/scanners/debug/kate.actual.html b/test/scanners/debug/kate.actual.html
new file mode 100644
index 0000000..48e02fb
--- /dev/null
+++ b/test/scanners/debug/kate.actual.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <title>CodeRay HTML Encoder Example</title>
+ <style type="text/css">
+.CodeRay {
+ background-color: #f8f8f8;
+ border: 1px solid silver;
+ font-family: 'Courier New', 'Terminal', monospace;
+ color: #100;
+}
+.CodeRay pre { margin: 0px }
+
+div.CodeRay { }
+
+span.CodeRay { white-space: pre; border: 0px; padding: 2px }
+
+table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px }
+table.CodeRay td { padding: 2px 4px; vertical-align: top }
+
+.CodeRay .line_numbers, .CodeRay .no {
+ background-color: #def;
+ color: gray;
+ text-align: right;
+}
+.CodeRay .line_numbers tt { font-weight: bold }
+.CodeRay .no { padding: 0px 4px }
+.CodeRay .code { width: 100% }
+
+ol.CodeRay { font-size: 10pt }
+ol.CodeRay li { white-space: pre }
+
+.CodeRay .code pre { overflow: auto }
+
+.CodeRay .debug { color:white ! important; background:blue ! important; }
+
+.CodeRay .af { color:#00C }
+.CodeRay .an { color:#007 }
+.CodeRay .av { color:#700 }
+.CodeRay .aw { color:#C00 }
+.CodeRay .bi { color:#509; font-weight:bold }
+.CodeRay .c { color:#888 }
+
+.CodeRay .ch { color:#04D }
+.CodeRay .ch .k { color:#04D }
+.CodeRay .ch .dl { color:#039 }
+
+.CodeRay .cl { color:#B06; font-weight:bold }
+.CodeRay .co { color:#036; font-weight:bold }
+.CodeRay .cr { color:#0A0 }
+.CodeRay .cv { color:#369 }
+.CodeRay .df { color:#099; font-weight:bold }
+.CodeRay .di { color:#088; font-weight:bold }
+.CodeRay .dl { color:black }
+.CodeRay .do { color:#970 }
+.CodeRay .ds { color:#D42; font-weight:bold }
+.CodeRay .e { color:#666; font-weight:bold }
+.CodeRay .en { color:#800; font-weight:bold }
+.CodeRay .er { color:#F00; background-color:#FAA }
+.CodeRay .ex { color:#F00; font-weight:bold }
+.CodeRay .fl { color:#60E; font-weight:bold }
+.CodeRay .fu { color:#06B; font-weight:bold }
+.CodeRay .gv { color:#d70; font-weight:bold }
+.CodeRay .hx { color:#058; font-weight:bold }
+.CodeRay .i { color:#00D; font-weight:bold }
+.CodeRay .ic { color:#B44; font-weight:bold }
+
+.CodeRay .il { background: #eee }
+.CodeRay .il .il { background: #ddd }
+.CodeRay .il .il .il { background: #ccc }
+.CodeRay .il .idl { font-weight: bold; color: #888 }
+
+.CodeRay .in { color:#B2B; font-weight:bold }
+.CodeRay .iv { color:#33B }
+.CodeRay .la { color:#970; font-weight:bold }
+.CodeRay .lv { color:#963 }
+.CodeRay .oc { color:#40E; font-weight:bold }
+.CodeRay .on { color:#000; font-weight:bold }
+.CodeRay .op { }
+.CodeRay .pc { color:#038; font-weight:bold }
+.CodeRay .pd { color:#369; font-weight:bold }
+.CodeRay .pp { color:#579 }
+.CodeRay .pt { color:#339; font-weight:bold }
+.CodeRay .r { color:#080; font-weight:bold }
+
+.CodeRay .rx { background-color:#fff0ff }
+.CodeRay .rx .k { color:#808 }
+.CodeRay .rx .dl { color:#404 }
+.CodeRay .rx .mod { color:#C2C }
+.CodeRay .rx .fu { color:#404; font-weight: bold }
+
+.CodeRay .s { background-color:#fff0f0 }
+.CodeRay .s .s { background-color:#ffe0e0 }
+.CodeRay .s .s .s { background-color:#ffd0d0 }
+.CodeRay .s .k { color:#D20 }
+.CodeRay .s .dl { color:#710 }
+
+.CodeRay .sh { background-color:#f0fff0 }
+.CodeRay .sh .k { color:#2B2 }
+.CodeRay .sh .dl { color:#161 }
+
+.CodeRay .sy { color:#A60 }
+.CodeRay .sy .k { color:#A60 }
+.CodeRay .sy .dl { color:#630 }
+
+.CodeRay .ta { color:#070 }
+.CodeRay .tf { color:#070; font-weight:bold }
+.CodeRay .ts { color:#D70; font-weight:bold }
+.CodeRay .ty { color:#339; font-weight:bold }
+.CodeRay .v { color:#036 }
+.CodeRay .xt { color:#444 }
+
+ </style>
+</head>
+<body style="background-color: white;">
+
+<div class="CodeRay">
+ <div class="code"><pre><span class="no"> 1</span> <span title="[:preprocessor]" class="pp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 2</span> </span><span title="[:preprocessor]" class="pp">&lt;!DOCTYPE language SYSTEM &quot;language.dtd&quot;&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 3</span> </span><span title="[:tag]" class="ta">&lt;language</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Eiffel</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">version</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">1.02</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">kateversion</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">2.1</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">section</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Sources</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">extensions</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">*.e</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">mimetype</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">text/x-eiffel-src</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 4</span> </span><span title="[:tag]" class="ta">&lt;highlighting&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 5</span> </span><span title="[:tag]" class="ta">&lt;list</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">keywords</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 6</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">indexing </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 7</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">class </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 8</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">inherit </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"> 9</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">creation </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>10</strong></span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">feature </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">11</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">rename </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">12</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">redefine </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">13</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">undefine </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">14</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">select </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">15</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">export </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">16</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">local </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">17</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">deferred </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">18</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">do </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">19</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">is </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>20</strong></span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">once </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">21</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">alias </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">22</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">external </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">23</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">rescue </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">24</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">debug </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">25</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">if </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">26</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">inspect </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">27</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">from </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">28</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">else </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">29</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">elseif </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>30</strong></span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">when </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">31</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">until </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">32</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">loop </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">33</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">then </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">34</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">obsolete </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">35</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">end </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">36</span> </span><span title="[:tag]" class="ta">&lt;/list&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">37</span> </span><span title="[:tag]" class="ta">&lt;list</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">assertions</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">38</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">check </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">39</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">ensure </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>40</strong></span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">require </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">41</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">variant </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">42</span> </span><span title="[:tag]" class="ta">&lt;item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:plain]" class="NO_HIGHLIGHT">invariant </span><span title="[:tag]" class="ta">&lt;/item&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">43</span> </span><span title="[:tag]" class="ta">&lt;/list&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">44</span> </span><span title="[:tag]" class="ta">&lt;contexts&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">45</span> </span><span title="[:tag]" class="ta">&lt;context</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Normal Text</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">lineEndContext</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Normal</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">46</span> </span><span title="[:tag]" class="ta">&lt;keyword</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Keyword</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">String</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">keywords</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">47</span> </span><span title="[:tag]" class="ta">&lt;Float</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Float</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">48</span> </span><span title="[:tag]" class="ta">&lt;Int</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Decimal</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">49</span> </span><span title="[:tag]" class="ta">&lt;RegExpr</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Char</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">String</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">'.'</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>50</strong></span> </span><span title="[:tag]" class="ta">&lt;DetectChar</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">char</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :entity]" class="en">&amp;quot;</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">51</span> </span><span title="[:tag]" class="ta">&lt;Detect2Chars</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Comment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Comment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">char</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">-</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">char1</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">-</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">52</span> </span><span title="[:tag]" class="ta">&lt;keyword</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Assertions</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#stay</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">String</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">assertions</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">53</span> </span><span title="[:tag]" class="ta">&lt;/context&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">54</span> </span><span title="[:tag]" class="ta">&lt;context</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">lineEndContext</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#pop</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">55</span> </span><span title="[:tag]" class="ta">&lt;DetectChar</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">context</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#pop</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">char</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :entity]" class="en">&amp;quot;</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">56</span> </span><span title="[:tag]" class="ta">&lt;/context&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">57</span> </span><span title="[:tag]" class="ta">&lt;context</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">attribute</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Comment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Comment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">lineEndContext</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">#pop</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">58</span> </span><span title="[:tag]" class="ta">&lt;/contexts&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">59</span> </span><span title="[:tag]" class="ta">&lt;itemDatas&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>60</strong></span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Normal Text</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsNormal</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">61</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Keyword</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsKeyword</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">62</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Decimal</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsDecVal</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">63</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Float</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsFloat</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">64</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Char</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsChar</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">65</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">String</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsString</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">66</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Comment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsComment</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">67</span> </span><span title="[:tag]" class="ta">&lt;itemData</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">Assertions</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">defStyleNum</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">dsOthers</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">68</span> </span><span title="[:tag]" class="ta">&lt;/itemDatas&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">69</span> </span><span title="[:tag]" class="ta">&lt;/highlighting&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no"><strong>70</strong></span> </span><span title="[:tag]" class="ta">&lt;general&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">71</span> </span><span title="[:tag]" class="ta">&lt;comments&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">72</span> </span><span title="[:tag]" class="ta">&lt;comment</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">name</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">singleLine</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">start</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">--</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">73</span> </span><span title="[:tag]" class="ta">&lt;/comments&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">74</span> </span><span title="[:tag]" class="ta">&lt;keywords</span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:attribute_name]" class="an">casesensitive</span><span title="[:operator]" class="NO_HIGHLIGHT">=</span><span title="[:string]" class="s"><span title="[:string, :delimiter]" class="dl">&quot;</span><span title="[:string, :content]" class="k">1</span><span title="[:string, :delimiter]" class="dl">&quot;</span></span><span title="[:space]" class="NO_HIGHLIGHT"> </span><span title="[:tag]" class="ta">/&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">75</span> </span><span title="[:tag]" class="ta">&lt;/general&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">76</span> </span><span title="[:tag]" class="ta">&lt;/language&gt;</span><span title="[:space]" class="NO_HIGHLIGHT">
+<span class="no">77</span> </span></pre></div>
+</div>
+
+</body>
+</html>
diff --git a/test/scanners/debug/kate.expected.raydebug b/test/scanners/debug/kate.expected.raydebug
new file mode 100644
index 0000000..01eec5a
--- /dev/null
+++ b/test/scanners/debug/kate.expected.raydebug
@@ -0,0 +1,76 @@
+preprocessor(<?xml version="1.0" encoding="UTF-8"?>)
+preprocessor(<!DOCTYPE language SYSTEM "language.dtd">)
+tag(<language) attribute_name(name)operator(=)string<delimiter(")content(Eiffel)delimiter(")> attribute_name(version)operator(=)string<delimiter(")content(1.02)delimiter(")> attribute_name(kateversion)operator(=)string<delimiter(")content(2.1)delimiter(")> attribute_name(section)operator(=)string<delimiter(")content(Sources)delimiter(")> attribute_name(extensions)operator(=)string<delimiter(")content(*.e)delimiter(")> attribute_name(mimetype)operator(=)string<delimiter(")content(text/x-eiffel-src)delimiter(")>tag(>)
+ tag(<highlighting>)
+ tag(<list) attribute_name(name)operator(=)string<delimiter(")content(keywords)delimiter(")>tag(>)
+ tag(<item>) plain(indexing )tag(</item>)
+ tag(<item>) plain(class )tag(</item>)
+ tag(<item>) plain(inherit )tag(</item>)
+ tag(<item>) plain(creation )tag(</item>)
+ tag(<item>) plain(feature )tag(</item>)
+ tag(<item>) plain(rename )tag(</item>)
+ tag(<item>) plain(redefine )tag(</item>)
+ tag(<item>) plain(undefine )tag(</item>)
+ tag(<item>) plain(select )tag(</item>)
+ tag(<item>) plain(export )tag(</item>)
+ tag(<item>) plain(local )tag(</item>)
+ tag(<item>) plain(deferred )tag(</item>)
+ tag(<item>) plain(do )tag(</item>)
+ tag(<item>) plain(is )tag(</item>)
+ tag(<item>) plain(once )tag(</item>)
+ tag(<item>) plain(alias )tag(</item>)
+ tag(<item>) plain(external )tag(</item>)
+ tag(<item>) plain(rescue )tag(</item>)
+ tag(<item>) plain(debug )tag(</item>)
+ tag(<item>) plain(if )tag(</item>)
+ tag(<item>) plain(inspect )tag(</item>)
+ tag(<item>) plain(from )tag(</item>)
+ tag(<item>) plain(else )tag(</item>)
+ tag(<item>) plain(elseif )tag(</item>)
+ tag(<item>) plain(when )tag(</item>)
+ tag(<item>) plain(until )tag(</item>)
+ tag(<item>) plain(loop )tag(</item>)
+ tag(<item>) plain(then )tag(</item>)
+ tag(<item>) plain(obsolete )tag(</item>)
+ tag(<item>) plain(end )tag(</item>)
+ tag(</list>)
+ tag(<list) attribute_name(name)operator(=)string<delimiter(")content(assertions)delimiter(")>tag(>)
+ tag(<item>) plain(check )tag(</item>)
+ tag(<item>) plain(ensure )tag(</item>)
+ tag(<item>) plain(require )tag(</item>)
+ tag(<item>) plain(variant )tag(</item>)
+ tag(<item>) plain(invariant )tag(</item>)
+ tag(</list>)
+ tag(<contexts>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(Normal Text)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(Normal)delimiter(")>tag(>)
+ tag(<keyword) attribute_name(attribute)operator(=)string<delimiter(")content(Keyword)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content(keywords)delimiter(")>tag(/>)
+ tag(<Float) attribute_name(attribute)operator(=)string<delimiter(")content(Float)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")>tag(/>)
+ tag(<Int) attribute_name(attribute)operator(=)string<delimiter(")content(Decimal)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")>tag(/>)
+ tag(<RegExpr) attribute_name(attribute)operator(=)string<delimiter(")content(Char)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content('.')delimiter(")>tag(/>)
+ tag(<DetectChar) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(char)operator(=)string<delimiter(")entity(&quot;)delimiter(")>tag(/>)
+ tag(<Detect2Chars) attribute_name(attribute)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(char)operator(=)string<delimiter(")content(-)delimiter(")> attribute_name(char1)operator(=)string<delimiter(")content(-)delimiter(")>tag(/>)
+ tag(<keyword) attribute_name(attribute)operator(=)string<delimiter(")content(Assertions)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content(assertions)delimiter(")>tag(/>)
+ tag(</context>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#pop)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(String)delimiter(")>tag(>)
+ tag(<DetectChar) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#pop)delimiter(")> attribute_name(char)operator(=)string<delimiter(")entity(&quot;)delimiter(")>tag(/>)
+ tag(</context>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#pop)delimiter(")>tag(/>)
+ tag(</contexts>)
+ tag(<itemDatas>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Normal Text)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsNormal)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Keyword)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsKeyword)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Decimal)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsDecVal)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Float)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsFloat)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Char)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsChar)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsString)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsComment)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Assertions)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsOthers)delimiter(")> tag(/>)
+ tag(</itemDatas>)
+ tag(</highlighting>)
+ tag(<general>)
+ tag(<comments>)
+ tag(<comment) attribute_name(name)operator(=)string<delimiter(")content(singleLine)delimiter(")> attribute_name(start)operator(=)string<delimiter(")content(--)delimiter(")> tag(/>)
+ tag(</comments>)
+ tag(<keywords) attribute_name(casesensitive)operator(=)string<delimiter(")content(1)delimiter(")> tag(/>)
+ tag(</general>)
+tag(</language>)
diff --git a/test/scanners/debug/kate.in.raydebug b/test/scanners/debug/kate.in.raydebug
new file mode 100644
index 0000000..01eec5a
--- /dev/null
+++ b/test/scanners/debug/kate.in.raydebug
@@ -0,0 +1,76 @@
+preprocessor(<?xml version="1.0" encoding="UTF-8"?>)
+preprocessor(<!DOCTYPE language SYSTEM "language.dtd">)
+tag(<language) attribute_name(name)operator(=)string<delimiter(")content(Eiffel)delimiter(")> attribute_name(version)operator(=)string<delimiter(")content(1.02)delimiter(")> attribute_name(kateversion)operator(=)string<delimiter(")content(2.1)delimiter(")> attribute_name(section)operator(=)string<delimiter(")content(Sources)delimiter(")> attribute_name(extensions)operator(=)string<delimiter(")content(*.e)delimiter(")> attribute_name(mimetype)operator(=)string<delimiter(")content(text/x-eiffel-src)delimiter(")>tag(>)
+ tag(<highlighting>)
+ tag(<list) attribute_name(name)operator(=)string<delimiter(")content(keywords)delimiter(")>tag(>)
+ tag(<item>) plain(indexing )tag(</item>)
+ tag(<item>) plain(class )tag(</item>)
+ tag(<item>) plain(inherit )tag(</item>)
+ tag(<item>) plain(creation )tag(</item>)
+ tag(<item>) plain(feature )tag(</item>)
+ tag(<item>) plain(rename )tag(</item>)
+ tag(<item>) plain(redefine )tag(</item>)
+ tag(<item>) plain(undefine )tag(</item>)
+ tag(<item>) plain(select )tag(</item>)
+ tag(<item>) plain(export )tag(</item>)
+ tag(<item>) plain(local )tag(</item>)
+ tag(<item>) plain(deferred )tag(</item>)
+ tag(<item>) plain(do )tag(</item>)
+ tag(<item>) plain(is )tag(</item>)
+ tag(<item>) plain(once )tag(</item>)
+ tag(<item>) plain(alias )tag(</item>)
+ tag(<item>) plain(external )tag(</item>)
+ tag(<item>) plain(rescue )tag(</item>)
+ tag(<item>) plain(debug )tag(</item>)
+ tag(<item>) plain(if )tag(</item>)
+ tag(<item>) plain(inspect )tag(</item>)
+ tag(<item>) plain(from )tag(</item>)
+ tag(<item>) plain(else )tag(</item>)
+ tag(<item>) plain(elseif )tag(</item>)
+ tag(<item>) plain(when )tag(</item>)
+ tag(<item>) plain(until )tag(</item>)
+ tag(<item>) plain(loop )tag(</item>)
+ tag(<item>) plain(then )tag(</item>)
+ tag(<item>) plain(obsolete )tag(</item>)
+ tag(<item>) plain(end )tag(</item>)
+ tag(</list>)
+ tag(<list) attribute_name(name)operator(=)string<delimiter(")content(assertions)delimiter(")>tag(>)
+ tag(<item>) plain(check )tag(</item>)
+ tag(<item>) plain(ensure )tag(</item>)
+ tag(<item>) plain(require )tag(</item>)
+ tag(<item>) plain(variant )tag(</item>)
+ tag(<item>) plain(invariant )tag(</item>)
+ tag(</list>)
+ tag(<contexts>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(Normal Text)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(Normal)delimiter(")>tag(>)
+ tag(<keyword) attribute_name(attribute)operator(=)string<delimiter(")content(Keyword)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content(keywords)delimiter(")>tag(/>)
+ tag(<Float) attribute_name(attribute)operator(=)string<delimiter(")content(Float)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")>tag(/>)
+ tag(<Int) attribute_name(attribute)operator(=)string<delimiter(")content(Decimal)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")>tag(/>)
+ tag(<RegExpr) attribute_name(attribute)operator(=)string<delimiter(")content(Char)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content('.')delimiter(")>tag(/>)
+ tag(<DetectChar) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(char)operator(=)string<delimiter(")entity(&quot;)delimiter(")>tag(/>)
+ tag(<Detect2Chars) attribute_name(attribute)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(char)operator(=)string<delimiter(")content(-)delimiter(")> attribute_name(char1)operator(=)string<delimiter(")content(-)delimiter(")>tag(/>)
+ tag(<keyword) attribute_name(attribute)operator(=)string<delimiter(")content(Assertions)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#stay)delimiter(")> attribute_name(String)operator(=)string<delimiter(")content(assertions)delimiter(")>tag(/>)
+ tag(</context>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#pop)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(String)delimiter(")>tag(>)
+ tag(<DetectChar) attribute_name(attribute)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(context)operator(=)string<delimiter(")content(#pop)delimiter(")> attribute_name(char)operator(=)string<delimiter(")entity(&quot;)delimiter(")>tag(/>)
+ tag(</context>)
+ tag(<context) attribute_name(attribute)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(name)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(lineEndContext)operator(=)string<delimiter(")content(#pop)delimiter(")>tag(/>)
+ tag(</contexts>)
+ tag(<itemDatas>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Normal Text)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsNormal)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Keyword)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsKeyword)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Decimal)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsDecVal)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Float)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsFloat)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Char)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsChar)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(String)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsString)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Comment)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsComment)delimiter(")> tag(/>)
+ tag(<itemData) attribute_name(name)operator(=)string<delimiter(")content(Assertions)delimiter(")> attribute_name(defStyleNum)operator(=)string<delimiter(")content(dsOthers)delimiter(")> tag(/>)
+ tag(</itemDatas>)
+ tag(</highlighting>)
+ tag(<general>)
+ tag(<comments>)
+ tag(<comment) attribute_name(name)operator(=)string<delimiter(")content(singleLine)delimiter(")> attribute_name(start)operator(=)string<delimiter(")content(--)delimiter(")> tag(/>)
+ tag(</comments>)
+ tag(<keywords) attribute_name(casesensitive)operator(=)string<delimiter(")content(1)delimiter(")> tag(/>)
+ tag(</general>)
+tag(</language>)
diff --git a/test/scanners/debug/suite.rb b/test/scanners/debug/suite.rb
new file mode 100644
index 0000000..42503ee
--- /dev/null
+++ b/test/scanners/debug/suite.rb
@@ -0,0 +1,3 @@
+class Debug < CodeRay::TestCase
+ extension :raydebug
+end
diff --git a/test/scanners/ruby/nested-heredoc.expected.raydebug b/test/scanners/ruby/nested-heredoc.expected.raydebug
new file mode 100644
index 0000000..4aa4fed
--- /dev/null
+++ b/test/scanners/ruby/nested-heredoc.expected.raydebug
@@ -0,0 +1,27 @@
+ident(p) string<delimiter(")inline<inline_delimiter(#{)string<delimiter(<<'END')>operator(.)ident(strip)operator(.)ident(reverse)inline_delimiter(})>char(\\
+)content(First
+END
+Second)delimiter(")>
+
+ident(p) shell<delimiter(<<`one`)> operator(;) ident(p) string<delimiter(")inline<inline_delimiter(#{)string<delimiter(<<two)>inline_delimiter(})>delimiter(")>shell<content(
+1)delimiter(
+one)>string<content(
+2)delimiter(
+two)>
+
+ident(this)operator(.)ident(should)operator(.)ident(be)operator(.)ident(plain)
+
+comment(# from Rails)
+reserved(unless) ident(new_record?)
+ ident(connection)operator(.)ident(delete) string<delimiter(<<-end_sql)>operator(,) string<delimiter(")inline<inline_delimiter(#{)pre_constant(self)operator(.)ident(class)operator(.)ident(name)inline_delimiter(})>content( Destroy)delimiter(")>string<content(
+ DELETE FROM )inline<inline_delimiter(#{)pre_constant(self)operator(.)ident(class)operator(.)ident(table_name)inline_delimiter(})>content(
+ WHERE )inline<inline_delimiter(#{)pre_constant(self)operator(.)ident(class)operator(.)ident(primary_key)inline_delimiter(})>content( = )inline<inline_delimiter(#{)ident(quoted_id)inline_delimiter(})>delimiter(
+ end_sql)>
+reserved(end)
+
+ident(p) string<delimiter(<<this)>string<content(
+but it may break )inline<inline_delimiter(#{)string<delimiter(<<that)>inline_delimiter(})>content(
+code.
+that)delimiter(
+this)>
+ident(that)operator(.)ident(should)operator(.)ident(be)operator(.)ident(plain) \ No newline at end of file
diff --git a/test/scanners/ruby/nested-heredoc.in.rb b/test/scanners/ruby/nested-heredoc.in.rb
new file mode 100755
index 0000000..3059e48
--- /dev/null
+++ b/test/scanners/ruby/nested-heredoc.in.rb
@@ -0,0 +1,27 @@
+p "#{<<'END'.strip.reverse}\
+First
+END
+Second"
+
+p <<`one` ; p "#{<<two}"
+1
+one
+2
+two
+
+this.should.be.plain
+
+# from Rails
+unless new_record?
+ connection.delete <<-end_sql, "#{self.class.name} Destroy"
+ DELETE FROM #{self.class.table_name}
+ WHERE #{self.class.primary_key} = #{quoted_id}
+ end_sql
+end
+
+p <<this
+but it may break #{<<that}
+code.
+that
+this
+that.should.be.plain \ No newline at end of file