Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/autotests/html/highlight.rb.dark.html
T

673 lines
86 KiB
HTML

<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight.rb</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Ruby) - Theme (Breeze Dark)"/>
</head><body style="background-color:#232629;color:#cfcfc2"><pre>
<span style="color:#7a7c7d"># This file is a testcase for the highlighting of Ruby code</span>
<span style="color:#7a7c7d"># It's not executable code, but a collection of code snippets</span>
<span style="color:#7a7c7d">#</span>
<span style="color:#8e44ad;font-weight:bold">require</span> <span style="color:#da4453">'Config'</span>
<span style="color:#8e44ad;font-weight:bold">require</span> <span style="color:#da4453">'DO/Clients'</span>
<span style="color:#8e44ad;font-weight:bold">require</span> <span style="color:#da4453">'DO/DBClients'</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> <span style="color:#27aeae;font-weight:bold">CGI</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escapeElement</span>(string, <span style="color:#3f8058;font-weight:bold">*</span>elements)
elements <span style="color:#3f8058;font-weight:bold">=</span> elements<span style="font-weight:bold">[</span><span style="color:#f67400">0</span><span style="font-weight:bold">]</span> <span style="color:#fdbc4b;font-weight:bold">if</span> elements<span style="font-weight:bold">[</span><span style="color:#f67400">0</span><span style="font-weight:bold">]</span><span style="color:#2980b9">.</span><span style="color:#2980b9">kind_of?</span>(<span style="color:#2980b9">Array</span>)
<span style="color:#fdbc4b;font-weight:bold">unless</span> elements<span style="color:#2980b9">.</span><span style="color:#2980b9">empty?</span>
string<span style="color:#2980b9">.</span><span style="color:#2980b9">gsub</span>(<span style="color:#da4453">/&lt;</span><span style="color:#3daee9">\/</span><span style="color:#da4453">?(?:</span><span style="color:#3daee9">#{</span>elements<span style="color:#2980b9">.</span><span style="color:#2980b9">join</span>(<span style="color:#f44f4f">"|"</span>)<span style="color:#3daee9">}</span><span style="color:#da4453">)(?!</span><span style="color:#3daee9">\w</span><span style="color:#da4453">)(?:.|</span><span style="color:#3daee9">\n</span><span style="color:#da4453">)*?>/ni</span>) <span style="color:#fdbc4b;font-weight:bold">do</span>
<span style="color:#27aeae;font-weight:bold">CGI</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escapeHTML</span>(<span style="color:#27aeae;font-weight:bold">$&amp;</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
string
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">case</span> inputLine
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f44f4f">"debug"</span>
dumpDebugInfo
dumpSymbols
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#da4453">/p</span><span style="color:#3daee9">\s</span><span style="color:#da4453">+(</span><span style="color:#3daee9">\w</span><span style="color:#da4453">+)/</span>
dumpVariable(<span style="color:#27aeae">$1</span>)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f44f4f">"quit"</span>, <span style="color:#f44f4f">"exit"</span>
<span style="color:#8e44ad;font-weight:bold">exit</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
<span style="color:#8e44ad;font-weight:bold">print</span> <span style="color:#f44f4f">"Illegal command: </span><span style="color:#3daee9">#{</span>inputLine<span style="color:#3daee9">}</span><span style="color:#f44f4f">"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
kind <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#fdbc4b;font-weight:bold">case</span> year <span style="color:#7a7c7d">#hi there</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">1850</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">1889</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f44f4f">"Blues"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">1890</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">1909</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f44f4f">"Ragtime"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">1910</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">1929</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f44f4f">"New Orleans Jazz"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">1930</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">1939</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f44f4f">"Swing"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">1940</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">1950</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f44f4f">"Bebop"</span>
<span style="color:#fdbc4b;font-weight:bold">else</span> <span style="color:#f44f4f">"Jazz"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># URL-encode a string.</span>
<span style="color:#7a7c7d"># url_encoded_string = CGI::escape("'Stop!' said Fred")</span>
<span style="color:#7a7c7d"># # => "%27Stop%21%27+said+Fred"</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> <span style="color:#27aeae;font-weight:bold">CGI</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escape</span>(string)
string<span style="color:#2980b9">.</span><span style="color:#2980b9">gsub</span>(<span style="color:#da4453">/([^ a-zA-Z0-9_.-]+)/n</span>) <span style="color:#fdbc4b;font-weight:bold">do</span>
<span style="color:#3daee9">'%'</span> <span style="color:#3f8058;font-weight:bold">+</span> <span style="color:#27aeae">$1</span><span style="color:#2980b9">.</span><span style="color:#2980b9">unpack</span>(<span style="color:#da4453">'H2'</span> <span style="color:#3f8058;font-weight:bold">*</span> <span style="color:#27aeae">$1</span><span style="color:#2980b9">.</span><span style="color:#2980b9">size</span>)<span style="color:#2980b9">.</span><span style="color:#2980b9">join</span>(<span style="color:#3daee9">'%'</span>)<span style="color:#2980b9">.</span><span style="color:#2980b9">upcase</span>
<span style="color:#fdbc4b;font-weight:bold">end</span><span style="color:#2980b9">.</span><span style="color:#2980b9">tr</span>(<span style="color:#3daee9">' '</span>, <span style="color:#3daee9">'+'</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># Class ClientManager</span>
<span style="color:#7a7c7d">#</span>
<span style="color:#7a7c7d"># definition : Import, store and export the various data used by the application.</span>
<span style="color:#7a7c7d"># This class is the sole interface between the application and the underlying database.</span>
mon, day, year <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27aeae">$1</span>, <span style="color:#27aeae">$2</span>, <span style="color:#27aeae">$3</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#da4453">/(</span><span style="color:#3daee9">\d\d</span><span style="color:#da4453">)-(</span><span style="color:#3daee9">\d\d</span><span style="color:#da4453">)-(</span><span style="color:#3daee9">\d\d</span><span style="color:#da4453">)/</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"a = </span><span style="color:#3daee9">#{</span>a<span style="color:#3daee9">}</span><span style="color:#f44f4f">"</span> <span style="color:#fdbc4b;font-weight:bold">if</span> fDebug
<span style="color:#8e44ad;font-weight:bold">print</span> total <span style="color:#fdbc4b;font-weight:bold">unless</span> total <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f67400">0</span>
<span style="color:#fdbc4b;font-weight:bold">while</span> <span style="color:#8e44ad;font-weight:bold">gets</span>
<span style="color:#fdbc4b;font-weight:bold">next</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#da4453">/^#/</span> <span style="color:#7a7c7d"># Skip comments</span>
parseLine <span style="color:#fdbc4b;font-weight:bold">unless</span> <span style="color:#da4453">/^$/</span> <span style="color:#7a7c7d"># Don't parse empty lines</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">if</span> artist <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"John Coltrane"</span> <span style="color:#7a7c7d">#hi there</span>
artist <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"'Trane"</span> <span style="color:#7a7c7d">#hi there</span>
<span style="color:#fdbc4b;font-weight:bold">end</span> <span style="color:#fdbc4b;font-weight:bold">unless</span> nicknames <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"no"</span> <span style="color:#7a7c7d">#hi there</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#fdbc4b;font-weight:bold">if</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Gillespie"</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#7a7c7d">#hi there</span>
<span style="color:#f44f4f">"Dizzy"</span>
<span style="color:#fdbc4b;font-weight:bold">elsif</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Parker"</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
<span style="color:#f44f4f">"Bird"</span>
<span style="color:#fdbc4b;font-weight:bold">else</span> <span style="color:#7a7c7d">#hi there</span>
<span style="color:#f44f4f">"unknown"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">if</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Gillespie"</span> <span style="color:#fdbc4b;font-weight:bold">then</span> handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Dizzy"</span>
<span style="color:#fdbc4b;font-weight:bold">elsif</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Parker"</span> <span style="color:#fdbc4b;font-weight:bold">then</span> handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Bird"</span>
<span style="color:#fdbc4b;font-weight:bold">else</span> handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"unknown"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span> <span style="color:#7a7c7d">#hi there</span>
<span style="color:#fdbc4b;font-weight:bold">if</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Gillespie"</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Dizzy"</span>
<span style="color:#fdbc4b;font-weight:bold">elsif</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Parker"</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Bird"</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"unknown"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">if</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Gillespie"</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Dizzy"</span>
<span style="color:#fdbc4b;font-weight:bold">elsif</span> aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">artist</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#f44f4f">"Parker"</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Bird"</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
handle <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"unknown"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">case</span> line
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#da4453">/title=(.*)/</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"Title is </span><span style="color:#3daee9">#$1</span><span style="color:#f44f4f">"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#da4453">/track=(.*)/</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"Track is </span><span style="color:#3daee9">#$1</span><span style="color:#f44f4f">"</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#da4453">/artist=(.*)/</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"Artist is </span><span style="color:#3daee9">#$1</span><span style="color:#f44f4f">"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">case</span> shape
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Square</span>, <span style="color:#2980b9">Rectangle</span>
<span style="color:#7a7c7d"># ...</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Circle</span>
<span style="color:#7a7c7d"># ...</span>
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Triangle</span>
<span style="color:#7a7c7d"># ...</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
<span style="color:#7a7c7d"># ...</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">until</span> playList<span style="color:#2980b9">.</span><span style="color:#2980b9">duration</span> <span style="color:#3f8058;font-weight:bold">></span> <span style="color:#f67400">60</span> <span style="color:#7a7c7d">#hi there</span>
playList<span style="color:#2980b9">.</span><span style="color:#2980b9">add</span>(songList<span style="color:#2980b9">.</span><span style="color:#2980b9">pop</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#f67400">3</span><span style="color:#2980b9">.</span><span style="color:#2980b9">times</span> <span style="color:#fdbc4b;font-weight:bold">do</span>
<span style="color:#8e44ad;font-weight:bold">print</span> <span style="color:#f44f4f">"Ho! "</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#8e44ad;font-weight:bold">loop</span> <span style="color:#3f8058;font-weight:bold">{</span>
<span style="color:#7a7c7d"># block ...</span>
<span style="color:#3f8058;font-weight:bold">}</span>
songList<span style="color:#2980b9">.</span><span style="color:#2980b9">each</span> <span style="color:#fdbc4b;font-weight:bold">do</span> <span style="color:#3f8058;font-weight:bold">|</span>aSong<span style="color:#3f8058;font-weight:bold">|</span>
aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">play</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> aSong <span style="color:#fdbc4b;font-weight:bold">in</span> songList
aSong<span style="color:#2980b9">.</span><span style="color:#2980b9">play</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> i <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="font-weight:bold">[</span><span style="color:#da4453">'fee'</span>, <span style="color:#da4453">'fi'</span>, <span style="color:#da4453">'fo'</span>, <span style="color:#da4453">'fum'</span><span style="font-weight:bold">]</span>
<span style="color:#8e44ad;font-weight:bold">print</span> i, <span style="color:#f44f4f">" "</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> i <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">3</span>
<span style="color:#8e44ad;font-weight:bold">print</span> i, <span style="color:#f44f4f">" "</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> i <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#2980b9">File</span><span style="color:#2980b9">.</span><span style="color:#2980b9">open</span>(<span style="color:#f44f4f">"ordinal"</span>)<span style="color:#2980b9">.</span><span style="color:#2980b9">find_all</span> <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#3f8058;font-weight:bold">|</span>l<span style="color:#3f8058;font-weight:bold">|</span> l <span style="color:#3f8058;font-weight:bold">=~</span> <span style="color:#da4453">/d$/</span><span style="color:#3f8058;font-weight:bold">}</span>
<span style="color:#8e44ad;font-weight:bold">print</span> i<span style="color:#2980b9">.</span><span style="color:#2980b9">chomp</span>, <span style="color:#f44f4f">" "</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#2980b9">Periods</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> each
<span style="color:#fdbc4b;font-weight:bold">yield</span> <span style="color:#f44f4f">"Classical"</span>
<span style="color:#fdbc4b;font-weight:bold">yield</span> <span style="color:#f44f4f">"Jazz"</span>
<span style="color:#fdbc4b;font-weight:bold">yield</span> <span style="color:#f44f4f">"Rock"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
periods <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#2980b9">Periods</span><span style="color:#2980b9">.</span><span style="color:#2980b9">new</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> genre <span style="color:#fdbc4b;font-weight:bold">in</span> periods
<span style="color:#8e44ad;font-weight:bold">print</span> genre, <span style="color:#f44f4f">" "</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">while</span> <span style="color:#8e44ad;font-weight:bold">gets</span>
<span style="color:#fdbc4b;font-weight:bold">next</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#da4453">/^</span><span style="color:#3daee9">\s</span><span style="color:#da4453">*#/</span> <span style="color:#7a7c7d"># skip comments</span>
<span style="color:#fdbc4b;font-weight:bold">break</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#da4453">/^END/</span> <span style="color:#7a7c7d"># stop at end</span>
<span style="color:#7a7c7d"># substitute stuff in backticks and try again</span>
<span style="color:#fdbc4b;font-weight:bold">redo</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#8e44ad;font-weight:bold">gsub!</span>(<span style="color:#da4453">/`(.*?)`/</span>) <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#8e44ad;font-weight:bold">eval</span>(<span style="color:#27aeae">$1</span>) <span style="color:#3f8058;font-weight:bold">}</span>
<span style="color:#7a7c7d"># process line ...</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
i<span style="color:#3f8058;font-weight:bold">=</span><span style="color:#f67400">0</span>
<span style="color:#8e44ad;font-weight:bold">loop</span> <span style="color:#fdbc4b;font-weight:bold">do</span>
i <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#f67400">1</span>
<span style="color:#fdbc4b;font-weight:bold">next</span> <span style="color:#fdbc4b;font-weight:bold">if</span> i <span style="color:#3f8058;font-weight:bold">&lt;</span> <span style="color:#f67400">3</span>
<span style="color:#8e44ad;font-weight:bold">print</span> i
<span style="color:#fdbc4b;font-weight:bold">break</span> <span style="color:#fdbc4b;font-weight:bold">if</span> i <span style="color:#3f8058;font-weight:bold">></span> <span style="color:#f67400">4</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> i <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">..</span><span style="color:#f67400">100</span>
<span style="color:#8e44ad;font-weight:bold">print</span> <span style="color:#f44f4f">"Now at </span><span style="color:#3daee9">#{</span>i<span style="color:#3daee9">}</span><span style="color:#f44f4f">. Restart? "</span>
<span style="color:#fdbc4b;font-weight:bold">retry</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#8e44ad;font-weight:bold">gets</span> <span style="color:#3f8058;font-weight:bold">=~</span> <span style="color:#da4453">/^y/i</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> doUntil(cond)
<span style="color:#fdbc4b;font-weight:bold">yield</span>
<span style="color:#fdbc4b;font-weight:bold">retry</span> <span style="color:#fdbc4b;font-weight:bold">unless</span> cond
<span style="color:#fdbc4b;font-weight:bold">end</span>
i <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">0</span>
doUntil(i <span style="color:#3f8058;font-weight:bold">></span> <span style="color:#f67400">3</span>) <span style="color:#3f8058;font-weight:bold">{</span>
<span style="color:#8e44ad;font-weight:bold">print</span> i, <span style="color:#f44f4f">" "</span>
i <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#f67400">1</span>
<span style="color:#3f8058;font-weight:bold">}</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> system_call
<span style="color:#7a7c7d"># ... code which throws SystemCallError</span>
<span style="color:#fdbc4b;font-weight:bold">rescue</span> <span style="color:#2980b9">SystemCallError</span>
<span style="color:#27aeae;font-weight:bold">$stderr</span><span style="color:#2980b9">.</span><span style="color:#2980b9">print</span> <span style="color:#f44f4f">"IO failed: "</span> <span style="color:#3f8058;font-weight:bold">+</span> <span style="color:#27aeae;font-weight:bold">$!</span>
opFile<span style="color:#2980b9">.</span><span style="color:#2980b9">close</span>
<span style="color:#2980b9">File</span><span style="color:#2980b9">.</span><span style="color:#2980b9">delete</span>(opName)
<span style="color:#8e44ad;font-weight:bold">raise</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#2980b9">ClientManager</span>
<span style="color:#7a7c7d"># constructor</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> initialize(dbase)
<span style="color:#27ae60">@dbClient</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#2980b9">DBClient</span><span style="color:#2980b9">.</span><span style="color:#2980b9">new</span>(dbase)
<span style="color:#27ae60">@clients</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#2980b9">Clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">new</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> prout(a, b, xy<span style="color:#3f8058;font-weight:bold">=</span><span style="color:#f44f4f">"jj"</span>) <span style="color:#f67400">24</span> <span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d">###############################################################</span>
<span style="color:#7a7c7d">#</span>
<span style="color:#7a7c7d"># CLIENTS SECTION</span>
<span style="color:#7a7c7d">#</span>
<span style="color:#7a7c7d">###############################################################</span>
<span style="color:#7a7c7d"># update the clients object by retrieving the related data from the database</span>
<span style="color:#7a7c7d"># returns the number of clients</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> refreshClients
<span style="color:#27ae60">@clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">clean</span>
<span style="color:#fdbc4b;font-weight:bold">unless</span> <span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">nil?</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">selectClient</span><span style="color:#2980b9">.</span><span style="color:#2980b9">each</span> <span style="color:#fdbc4b;font-weight:bold">do</span> <span style="color:#3f8058;font-weight:bold">|</span>row<span style="color:#3f8058;font-weight:bold">|</span>
<span style="color:#27ae60">@clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">addClient</span>(row<span style="font-weight:bold">[</span><span style="color:#f67400">0</span><span style="font-weight:bold">]</span>,row<span style="font-weight:bold">[</span><span style="color:#f67400">1</span><span style="font-weight:bold">]</span>,row<span style="font-weight:bold">[</span><span style="color:#f67400">2</span><span style="font-weight:bold">]</span>,row<span style="font-weight:bold">[</span><span style="color:#f67400">3</span><span style="font-weight:bold">]</span>,row<span style="font-weight:bold">[</span><span style="color:#f67400">4</span><span style="font-weight:bold">]</span>,row<span style="font-weight:bold">[</span><span style="color:#f67400">5</span><span style="font-weight:bold">]</span>, row<span style="font-weight:bold">[</span><span style="color:#f67400">6</span><span style="font-weight:bold">]</span>, row<span style="font-weight:bold">[</span><span style="color:#f67400">7</span><span style="font-weight:bold">]</span>, row<span style="font-weight:bold">[</span><span style="color:#f67400">8</span><span style="font-weight:bold">]</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"SqlQuery wasn't created : cannot read data from database"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">return</span> <span style="color:#27ae60">@clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">length</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># insert a client in the database and refreshes the local clients object</span>
<span style="color:#7a7c7d"># we assume that none of the arguments is null</span>
<span style="color:#7a7c7d"># we assume that the client, identified by raison_sociale doesn't already exists</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> addClient(raison_sociale, division, departement, adresse, cp, ville, nom_contact, tel_contact)
id <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"0"</span>
<span style="color:#fdbc4b;font-weight:bold">unless</span> <span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">nil?</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
id <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">insertClient</span>(raison_sociale, division, departement, adresse, cp, ville, nom_contact,tel_contact)
<span style="color:#fdbc4b;font-weight:bold">else</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"SqlQuery wasn't created : database update cannot be performed"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#27ae60">@clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">addClient</span>(id, raison_sociale, division, departement, adresse, cp, ville, nom_contact, tel_contact) <span style="color:#7a7c7d"># synchronize local object with DB</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># deletes a client from the database and updates the local Clients object accordingly</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> delClient(nomclient_brut)
raison_sociale, div, dep <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#2980b9">Clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getIdentifiers</span>(nomclient_brut)
listeContratsExp, listeContratsSup, listeContratsProd, listePropositionsExp, listePropositionsSup <span style="color:#3f8058;font-weight:bold">=</span> <span style="font-weight:bold">[]</span>
listeContratsExp <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@contratsExpertise</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getContratsFromClient</span>(nomclient_brut)
listeContratsSup <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@contratsSupport</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getContratsFromClient</span>(nomclient_brut)
listeContratsProd <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@contratsProduits</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getContratsFromClient</span>(nomclient_brut)
listePropositionsExp <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@propositionsExpertise</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getPropositionsFromClient</span>(nomclient_brut)
listePropositionsSup <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">@propositionsSupport</span><span style="color:#2980b9">.</span><span style="color:#2980b9">getPropositionsFromClient</span>(nomclient_brut)
<span style="color:#fdbc4b;font-weight:bold">unless</span> <span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">nil?</span> <span style="color:#fdbc4b;font-weight:bold">then</span>
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteClient</span>(raison_sociale, div, dep)
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(<span style="color:#2980b9">Config</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">EXPERTISE</span>,listeContratsExp)
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(<span style="color:#2980b9">Config</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">SUPPORT</span>,listeContratsSup)
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(<span style="color:#2980b9">Config</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">PRODUIT</span>,listeContratsProd)
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deletePropositions</span>(<span style="color:#2980b9">Config</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">EXPERTISE</span>,listePropositionsExp)
<span style="color:#27ae60">@sqlQuery</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deletePropositions</span>(<span style="color:#2980b9">Config</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">SUPPORT</span>,listePropositionsSup)
<span style="color:#fdbc4b;font-weight:bold">else</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#f44f4f">"SqlQuery wasn't created : database update cannot be performed"</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#27ae60">@clients</span><span style="color:#2980b9">.</span><span style="color:#2980b9">delClient</span>(raison_sociale,div,dep)
<span style="color:#27ae60">@contratsExpertise</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(listeContratsExp)
<span style="color:#27ae60">@contratsSupport</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(listeContratsSup)
<span style="color:#27ae60">@contratsProduits</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deleteContracts</span>(listeContratsProd)
<span style="color:#27ae60">@propositionsExpertise</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deletePropositions</span>(listePropositionsExp)
<span style="color:#27ae60">@propositionsSupport</span><span style="color:#2980b9">.</span><span style="color:#2980b9">deletePropositions</span>(listePropositionsSup)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># Mixin module for HTML version 3 generation methods.</span>
<span style="color:#fdbc4b;font-weight:bold">module</span> <span style="color:#2980b9">Html3</span> <span style="color:#7a7c7d"># :nodoc:</span>
<span style="color:#7a7c7d"># The DOCTYPE declaration for this version of HTML</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> doctype
<span style="color:#27ae60">%|</span><span style="color:#f44f4f">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"></span><span style="color:#27ae60">|</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># Initialise the HTML generation methods for this version.</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> element_init
<span style="color:#8e44ad;font-weight:bold">extend</span> <span style="color:#2980b9">TagMaker</span>
methods <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">""</span>
<span style="color:#7a7c7d"># - -</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> element <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#27ae60">%w[</span><span style="color:#da4453"> A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG</span>
<span style="color:#da4453"> DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP</span>
<span style="color:#da4453"> APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE</span>
<span style="color:#da4453"> STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE</span>
<span style="color:#da4453"> CAPTION </span><span style="color:#27ae60">]</span>
methods <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;-</span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span><span style="color:#a43340"> + nn_element_def(element) + &lt;&lt;-END</span>
<span style="color:#a43340"> def </span><span style="color:#3daee9">#{</span>element<span style="color:#2980b9">.</span><span style="color:#2980b9">downcase</span><span style="color:#3daee9">}</span><span style="color:#a43340">(attributes = {})</span>
<span style="color:#a43340"> </span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">END</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># - O EMPTY</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> element <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#27ae60">%w[</span><span style="color:#da4453"> IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT</span>
<span style="color:#da4453"> ISINDEX META </span><span style="color:#27ae60">]</span>
methods <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;-</span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span><span style="color:#a43340"> + nOE_element_def(element) + &lt;&lt;-END</span>
<span style="color:#a43340"> def </span><span style="color:#3daee9">#{</span>element<span style="color:#2980b9">.</span><span style="color:#2980b9">downcase</span><span style="color:#3daee9">}</span><span style="color:#a43340">(attributes = {})</span>
<span style="color:#a43340"> </span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">END</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># O O or - O</span>
<span style="color:#fdbc4b;font-weight:bold">for</span> element <span style="color:#fdbc4b;font-weight:bold">in</span> <span style="color:#27ae60">%w[</span><span style="color:#da4453"> HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr</span>
<span style="color:#da4453"> th td </span><span style="color:#27ae60">]</span>
methods <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;-</span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span><span style="color:#a43340"> + nO_element_def(element) + &lt;&lt;-END</span>
<span style="color:#a43340"> def </span><span style="color:#3daee9">#{</span>element<span style="color:#2980b9">.</span><span style="color:#2980b9">downcase</span><span style="color:#3daee9">}</span><span style="color:#a43340">(attributes = {})</span>
<span style="color:#a43340"> </span><span style="color:#fdbc4b;font-weight:bold">BEGIN</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">END</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#8e44ad;font-weight:bold">eval</span>(methods)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># following snippet from Webrick's log.rb</span>
<span style="color:#7a7c7d"># notice the erronous handling of the query method is_a?</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> <span style="color:#8e44ad;font-weight:bold">format</span>(arg)
str <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#fdbc4b;font-weight:bold">if</span> arg<span style="color:#2980b9">.</span><span style="color:#2980b9">is_a?</span>(<span style="color:#2980b9">Exception</span>)
<span style="color:#f44f4f">"</span><span style="color:#3daee9">#{</span>arg<span style="color:#2980b9">.</span><span style="color:#2980b9">class</span><span style="color:#3daee9">}</span><span style="color:#f44f4f">: </span><span style="color:#3daee9">#{</span>arg<span style="color:#2980b9">.</span><span style="color:#2980b9">message</span><span style="color:#3daee9">}</span><span style="color:#3daee9">\n\t</span><span style="color:#f44f4f">"</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;</span>
arg<span style="color:#2980b9">.</span><span style="color:#2980b9">backtrace</span><span style="color:#2980b9">.</span><span style="color:#2980b9">join</span>(<span style="color:#f44f4f">"</span><span style="color:#3daee9">\n\t</span><span style="color:#f44f4f">"</span>) <span style="color:#3f8058;font-weight:bold">&lt;&lt;</span> <span style="color:#f44f4f">"</span><span style="color:#3daee9">\n</span><span style="color:#f44f4f">"</span>
<span style="color:#fdbc4b;font-weight:bold">elsif</span> arg<span style="color:#2980b9">.</span><span style="color:#2980b9">respond_to?</span>(<span style="color:#da4453">:to_str</span>)
arg<span style="color:#2980b9">.</span><span style="color:#2980b9">to_str</span>
<span style="color:#fdbc4b;font-weight:bold">else</span>
arg<span style="color:#2980b9">.</span><span style="color:#2980b9">inspect</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># following snippet from Webrick's httputils.rb</span>
<span style="color:#7a7c7d"># Splitting regexps on several lines might be bad form,</span>
<span style="color:#7a7c7d"># but not illegal in Ruby. </span>
<span style="color:#7a7c7d"># This should probably be supported in the highlighting</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> split_header_value(str)
str<span style="color:#2980b9">.</span><span style="color:#2980b9">scan</span>(<span style="color:#da4453">/((?:"(?:</span><span style="color:#3daee9">\\</span><span style="color:#da4453">.|[^"])+?"|[^",]+)+)</span>
<span style="color:#da4453"> (?:,</span><span style="color:#3daee9">\s</span><span style="color:#da4453">*|</span><span style="color:#3daee9">\Z</span><span style="color:#da4453">)/xn</span>)<span style="color:#2980b9">.</span><span style="color:#2980b9">collect</span><span style="color:#3f8058;font-weight:bold">{|</span>v<span style="color:#3f8058;font-weight:bold">|</span> v<span style="font-weight:bold">[</span><span style="color:#f67400">0</span><span style="font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">}</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># snippet from Net::Telnet</span>
string<span style="color:#2980b9">.</span><span style="color:#2980b9">gsub</span>(<span style="color:#da4453">/</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">IAC</span><span style="color:#3daee9">}</span><span style="color:#da4453">(</span>
<span style="color:#da4453"> [</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">IAC</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">AO</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">AYT</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">DM</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">IP</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">NOP</span><span style="color:#3daee9">}</span><span style="color:#da4453">]|</span>
<span style="color:#da4453"> [</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">DO</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">DONT</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">WILL</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">WONT</span><span style="color:#3daee9">}</span><span style="color:#da4453">]</span>
<span style="color:#da4453"> [</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">OPT_BINARY</span><span style="color:#3daee9">}</span><span style="color:#da4453">-</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">OPT_NEW_ENVIRON</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">OPT_EXOPL</span><span style="color:#3daee9">}</span><span style="color:#da4453">]|</span>
<span style="color:#da4453"> </span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">SB</span><span style="color:#3daee9">}</span><span style="color:#da4453">[^</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">IAC</span><span style="color:#3daee9">}</span><span style="color:#da4453">]*</span><span style="color:#3daee9">#{</span><span style="color:#27aeae;font-weight:bold">IAC</span><span style="color:#3daee9">}#{</span><span style="color:#27aeae;font-weight:bold">SE</span><span style="color:#3daee9">}</span>
<span style="color:#da4453"> )/xno</span>)
<span style="color:#7a7c7d"># following snippet from Webrick's httpresponse.rb</span>
<span style="color:#7a7c7d"># the HEREDOC is not recognized as such</span>
<span style="color:#27ae60">@body</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;-</span><span style="color:#fdbc4b;font-weight:bold">_end_of_html_</span>
<span style="color:#a43340">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"></span>
<span style="color:#a43340">&lt;HTML></span>
<span style="color:#a43340"> &lt;HEAD>&lt;TITLE></span><span style="color:#3daee9">#{</span><span style="color:#2980b9">HTMLUtils</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escape</span>(<span style="color:#27ae60">@reason_phrase</span>)<span style="color:#3daee9">}</span><span style="color:#a43340">&lt;/TITLE>&lt;/HEAD></span>
<span style="color:#a43340"> &lt;BODY></span>
<span style="color:#a43340"> &lt;H1></span><span style="color:#3daee9">#{</span><span style="color:#2980b9">HTMLUtils</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escape</span>(<span style="color:#27ae60">@reason_phrase</span>)<span style="color:#3daee9">}</span><span style="color:#a43340">&lt;/H1></span>
<span style="color:#a43340"> </span><span style="color:#3daee9">#{</span><span style="color:#2980b9">HTMLUtils</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">escape</span>(ex<span style="color:#2980b9">.</span><span style="color:#2980b9">message</span>)<span style="color:#3daee9">}</span>
<span style="color:#a43340"> &lt;HR></span>
<span style="color:#fdbc4b;font-weight:bold">_end_of_html_</span>
<span style="color:#7a7c7d"># snippet from Webrick's httpproxy.rb</span>
<span style="color:#7a7c7d"># here we should make sure that the symbol definition ':' doesn't override</span>
<span style="color:#7a7c7d"># the module operator '::'</span>
<span style="color:#2980b9">Net</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">HTTP</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">version_1_2</span> <span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#27aeae;font-weight:bold">RUBY_VERSION</span> <span style="color:#3f8058;font-weight:bold">&lt;</span> <span style="color:#f44f4f">"1.7"</span>
<span style="color:#7a7c7d"># snippet from Webrick's cookie.rb</span>
<span style="color:#7a7c7d"># the beginning of the regexp is erronously highlighted like an operator</span>
key, val <span style="color:#3f8058;font-weight:bold">=</span> x<span style="color:#2980b9">.</span><span style="color:#2980b9">split</span>(<span style="color:#da4453">/=/</span>,<span style="color:#f67400">2</span>)
<span style="color:#7a7c7d"># the following are division operators</span>
<span style="color:#7a7c7d"># it's a bit tricky to keep the operator apart from the regexp</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">8</span> <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">4</span>
result <span style="color:#3f8058;font-weight:bold">/=</span> divisor
<span style="color:#7a7c7d"># 2008-06-01 regexp and division operator syntax has been fixed:</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">8</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">4</span> <span style="color:#7a7c7d"># division</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">8</span><span style="color:#3f8058;font-weight:bold">/</span>foo <span style="color:#7a7c7d"># division</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#da4453">/8/</span> <span style="color:#7a7c7d"># regexp</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">8</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#da4453">/4/</span> <span style="color:#7a7c7d"># division and regexp</span>
<span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#f67400">10</span> <span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#f67400">10</span> <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
foo<span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
foo<span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
foo <span style="color:#da4453">/10/</span> <span style="color:#7a7c7d"># regexp</span>
foo <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
foo<span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># both division</span>
total<span style="color:#3f8058;font-weight:bold">/</span>count<span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">2</span> <span style="color:#7a7c7d"># both division</span>
total<span style="color:#3f8058;font-weight:bold">/</span>(count<span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">2</span>) <span style="color:#7a7c7d"># both division</span>
<span style="color:#27ae60">@foo</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#27ae60">@foo</span> <span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#f44f4f">"hello"</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#f44f4f">"hello"</span> <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#da4453">/regexp/</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#da4453">/regexp/</span> <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#2980b9">Math</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#27aeae">PI</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">10</span> <span style="color:#7a7c7d"># division</span>
<span style="color:#2980b9">Math</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">foo</span> <span style="color:#da4453">/rx/</span> <span style="color:#7a7c7d"># regexp</span>
<span style="color:#7a7c7d"># 2008-06-05 similar fix for modulo operator:</span>
<span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">%</span><span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
<span style="color:#f67400">10</span> <span style="color:#3f8058;font-weight:bold">%</span><span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
<span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">%</span> <span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
<span style="color:#f67400">10</span> <span style="color:#3f8058;font-weight:bold">%</span> <span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
foo<span style="color:#3f8058;font-weight:bold">%</span><span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
<span style="color:#7a7c7d"># foo %4 # illegal %string</span>
foo<span style="color:#3f8058;font-weight:bold">%</span> <span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
foo <span style="color:#3f8058;font-weight:bold">%</span> <span style="color:#f67400">4</span> <span style="color:#7a7c7d"># modulo</span>
foo <span style="color:#3f8058;font-weight:bold">%</span> (<span style="color:#f67400">4</span>) <span style="color:#7a7c7d"># modulo</span>
foo <span style="color:#27ae60">%(</span><span style="color:#f44f4f">4</span><span style="color:#27ae60">)</span> <span style="color:#7a7c7d"># %string</span>
foo <span style="color:#27ae60">%q(</span><span style="color:#da4453">4</span><span style="color:#27ae60">)</span> <span style="color:#7a7c7d"># %string</span>
foo <span style="color:#27ae60">%Q(</span><span style="color:#f44f4f">4</span><span style="color:#27ae60">)</span> <span style="color:#7a7c7d"># %string</span>
foo <span style="color:#27ae60">%%</span><span style="color:#f44f4f">4</span><span style="color:#27ae60">%</span> <span style="color:#7a7c7d"># %string</span>
foo <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27ae60">%|</span><span style="color:#f44f4f">blah</span><span style="color:#27ae60">|</span> <span style="color:#7a7c7d"># GDL input</span>
foo <span style="color:#3f8058;font-weight:bold">%</span> <span style="color:#27ae60">%|</span><span style="color:#f44f4f">blah</span><span style="color:#27ae60">|</span> <span style="color:#7a7c7d"># modulo and GDL</span>
<span style="color:#7a7c7d"># mix in any way you want</span>
result <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f67400">10</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#da4453">/regexp/</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">20</span><span style="color:#3f8058;font-weight:bold">/</span>foo<span style="color:#3f8058;font-weight:bold">/</span><span style="color:#da4453">/regexp/</span><span style="color:#3f8058;font-weight:bold">/</span><span style="color:#f67400">20</span>
<span style="color:#7a7c7d"># test cases for general delimited input</span>
<span style="color:#7a7c7d"># quoted strings</span>
<span style="color:#27ae60">%Q_</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%Q|</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%Q{</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%Q(</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%Q&lt;</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%Q[</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#27ae60">%_</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%|</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%{</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%(</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%&lt;</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%[</span><span style="color:#f44f4f">also a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># array</span>
<span style="color:#27ae60">%W_</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%W|</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%W{</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%W(</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%W&lt;</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%W[</span><span style="color:#f44f4f">this is a string </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># apostrophed strings</span>
<span style="color:#27ae60">%q_</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%q|</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%q{</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%q(</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%q&lt;</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%q[</span><span style="color:#da4453">apostrophed \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># regular expressions</span>
<span style="color:#27ae60">%r_</span><span style="color:#da4453">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#da4453"> [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%r|</span><span style="color:#da4453">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#da4453"> [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%r{</span><span style="color:#f44f4f">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%r(</span><span style="color:#f44f4f">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%r&lt;</span><span style="color:#f44f4f">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%r[</span><span style="color:#f44f4f">expression </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#f44f4f"> [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># shell commands</span>
<span style="color:#27ae60">%x_</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%x|</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%x{</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%x(</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%x&lt;</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%x[</span><span style="color:#c45b00">ls -l </span><span style="color:#3daee9">\n</span><span style="color:#3daee9">#{</span><span style="color:#f67400">123</span><span style="color:#3daee9">}</span><span style="color:#c45b00"> [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># sometimes it's useful to have the command on multiple lines</span>
<span style="color:#27ae60">%x{</span><span style="color:#c45b00">ls -l |</span>
<span style="color:#c45b00">grep test </span><span style="color:#27ae60">}</span>
<span style="color:#7a7c7d"># alternative syntax</span>
<span style="color:#c45b00">`ls -l`</span>
<span style="color:#c45b00">`echo ' '`</span>
<span style="color:#7a7c7d"># token array</span>
<span style="color:#27ae60">%w_</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%w|</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%w{</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%w(</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%w&lt;</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%w[</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># symbol array</span>
<span style="color:#27ae60">%s_</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">_</span>
<span style="color:#27ae60">%s|</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">%s{</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">}</span>
<span style="color:#27ae60">%s(</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">)</span>
<span style="color:#27ae60">%s&lt;</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">></span>
<span style="color:#27ae60">%s[</span><span style="color:#da4453">one two three \n#{123} [&lt;({nested})>]</span><span style="color:#27ae60">]</span>
<span style="color:#7a7c7d"># number</span>
<span style="color:#7a7c7d"># binary</span>
<span style="color:#f67400">0b001</span>
<span style="color:#f67400">0B1101_1</span><span style="color:#da4453;text-decoration:underline">3</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># octal</span>
<span style="color:#f67400">0123</span>
<span style="color:#f67400">0123</span><span style="color:#da4453;text-decoration:underline">8</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># decimal</span>
<span style="color:#f67400">0</span> <span style="color:#f67400">10</span> <span style="color:#f67400">0d10</span> <span style="color:#f67400">120_12</span> <span style="color:#f67400">0d23_23</span>
<span style="color:#f67400">0</span><span style="color:#da4453;text-decoration:underline">_1_2</span> <span style="color:#f67400">0</span><span style="color:#da4453;text-decoration:underline">_1_</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># hex</span>
<span style="color:#f67400">0x218</span> <span style="color:#f67400">0x1a_23</span>
<span style="color:#f67400">0x218</span><span style="color:#da4453;text-decoration:underline">g</span> <span style="color:#f67400">0x1a_23</span><span style="color:#da4453;text-decoration:underline">g</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># complex</span>
<span style="color:#f67400">0</span><span style="color:#7f8c8d">i</span> <span style="color:#f67400">12</span><span style="color:#7f8c8d">i</span> <span style="color:#f67400">03</span><span style="color:#7f8c8d">i</span> <span style="color:#f67400">12.3</span><span style="color:#7f8c8d">i</span>
<span style="color:#f67400">012</span><span style="color:#da4453;text-decoration:underline">_i</span> <span style="color:#f67400">12.3</span><span style="color:#da4453;text-decoration:underline">_i</span> <span style="color:#f67400">123</span><span style="color:#7f8c8d">i</span><span style="color:#da4453;text-decoration:underline">a</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># rational</span>
<span style="color:#f67400">0</span><span style="color:#7f8c8d">r</span> <span style="color:#f67400">12</span><span style="color:#7f8c8d">r</span> <span style="color:#f67400">03</span><span style="color:#7f8c8d">r</span> <span style="color:#f67400">12.3</span><span style="color:#7f8c8d">r</span>
<span style="color:#f67400">012</span><span style="color:#da4453;text-decoration:underline">_r</span> <span style="color:#f67400">12.3</span><span style="color:#da4453;text-decoration:underline">_r</span> <span style="color:#f67400">123</span><span style="color:#7f8c8d">r</span><span style="color:#da4453;text-decoration:underline">a</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># rational</span>
<span style="color:#f67400">0</span><span style="color:#7f8c8d">ri</span> <span style="color:#f67400">12</span><span style="color:#7f8c8d">ri</span> <span style="color:#f67400">03</span><span style="color:#7f8c8d">ri</span> <span style="color:#f67400">12.3</span><span style="color:#7f8c8d">ri</span>
<span style="color:#f67400">012</span><span style="color:#da4453;text-decoration:underline">_ri</span> <span style="color:#f67400">12.3</span><span style="color:#da4453;text-decoration:underline">_ri</span> <span style="color:#f67400">123</span><span style="color:#7f8c8d">i</span><span style="color:#da4453;text-decoration:underline">r</span> <span style="color:#f67400">123</span><span style="color:#7f8c8d">ri</span><span style="color:#da4453;text-decoration:underline">a</span> <span style="color:#7a7c7d"># bad</span>
<span style="color:#7a7c7d"># Global constant</span>
<span style="color:#27aeae;font-weight:bold">ABC</span> <span style="color:#27aeae;font-weight:bold">ABC1</span> <span style="color:#27aeae;font-weight:bold">ABC1ABC</span> <span style="color:#27aeae;font-weight:bold">ABC_ABC_</span> <span style="color:#27aeae;font-weight:bold">___12</span> <span style="color:#27aeae;font-weight:bold">_1</span> <span style="color:#27aeae;font-weight:bold">_1ABC</span>
<span style="color:#7a7c7d"># Contant</span>
<span style="color:#2980b9">Abc</span> <span style="color:#2980b9">A1b</span> <span style="color:#2980b9">Ab1</span> <span style="color:#2980b9">ABC1a</span>
<span style="color:#7a7c7d"># ident</span>
ABC? ABC1? ABC1ABC? ABC_ABC_? ___12? _1? _1ABC?
Abc? A1b? Ab1? ABC1a?
<span style="color:#7a7c7d"># snippet from Net::IMAP</span>
<span style="color:#7a7c7d"># I object to putting String, Integer and Array into kernel methods.</span>
<span style="color:#7a7c7d"># While these classes are builtin in Ruby, this is an implementation detail</span>
<span style="color:#7a7c7d"># that should not be exposed to the user.</span>
<span style="color:#7a7c7d"># If we want to handle all std-lib classes, fine. But then they should be in their</span>
<span style="color:#7a7c7d"># own std-lib keyword category.</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> send_data(data)
<span style="color:#fdbc4b;font-weight:bold">case</span> data
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#f67400">nil</span>
put_string(<span style="color:#f44f4f">"NIL"</span>)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">String</span>
send_string_data(data)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Integer</span>
send_number_data(data)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Array</span>
send_list_data(data)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Time</span>
send_time_data(data)
<span style="color:#fdbc4b;font-weight:bold">when</span> <span style="color:#2980b9">Symbol</span>
send_symbol_data(data)
<span style="color:#fdbc4b;font-weight:bold">else</span>
data<span style="color:#2980b9">.</span><span style="color:#2980b9">send_data</span>(<span style="color:#f67400">self</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#7a7c7d"># snippet from Net::POP</span>
<span style="color:#7a7c7d"># class names can have numbers in them as long as they don't begin with numbers</span>
<span style="color:#7a7c7d"># Ruby doesn't internally really make much of a difference between a class name and a constant</span>
<span style="color:#7a7c7d"># class aliases</span>
<span style="color:#27aeae;font-weight:bold">POP</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27aeae;font-weight:bold">POP3</span>
<span style="color:#2980b9">POPSession</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27aeae;font-weight:bold">POP3</span>
<span style="color:#2980b9">POP3Session</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#27aeae;font-weight:bold">POP3</span>
<span style="color:#7a7c7d"># "member access"</span>
<span style="color:#27aeae;font-weight:bold">POP</span><span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">Session</span><span style="color:#2980b9">.</span><span style="color:#27aeae">COUNT</span><span style="color:#2980b9">.</span><span style="color:#2980b9">attribute</span><span style="color:#2980b9">.</span><span style="color:#2980b9">calc_with</span>(<span style="color:#f67400">2</span>)<span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#3f8058;font-weight:bold">|</span>arg<span style="color:#3f8058;font-weight:bold">|</span> <span style="color:#8e44ad;font-weight:bold">puts</span> arg <span style="color:#3f8058;font-weight:bold">}</span>
<span style="color:#7a7c7d"># snippet from Net::SMTP</span>
<span style="color:#7a7c7d"># This breaks the code folding. I think we would need to</span>
<span style="color:#7a7c7d"># handle the '\' that continues the statement to the next line</span>
<span style="color:#7a7c7d"># in some way to make these kind of things not break something.</span>
<span style="color:#8e44ad;font-weight:bold">raise</span> <span style="color:#2980b9">ArgumentError</span>, <span style="color:#da4453">'both user and secret are required'</span>\
<span style="color:#fdbc4b;font-weight:bold">unless</span> user <span style="color:#fdbc4b;font-weight:bold">and</span> secret
<span style="color:#7a7c7d"># string escapes must detect escaping the escape char</span>
str <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">"</span>
str <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"</span><span style="color:#3daee9">\\\\</span><span style="color:#f44f4f">"</span>
<span style="color:#7a7c7d"># this is not part of the string</span>
<span style="color:#27ae60">%x{</span><span style="color:#c45b00">echo </span><span style="color:#3daee9">\\\}\\</span><span style="color:#27ae60">}</span> <span style="color:#7a7c7d"># prints \}\</span>
<span style="color:#7a7c7d"># this is not part of the command</span>
<span style="color:#7a7c7d"># these are all symbols</span>
<span style="color:#da4453">:abc</span>
<span style="color:#da4453">:abc!</span>
<span style="color:#da4453">:abc?</span>
<span style="color:#da4453">:abc=</span>
<span style="color:#da4453">:[]</span>
<span style="color:#da4453">:[]=</span>
<span style="color:#da4453">:@abc</span>
<span style="color:#da4453">:@@abc</span>
<span style="color:#da4453">:$abc</span>
<span style="color:#7a7c7d"># squiggly HEREDOC</span>
<span style="color:#3f8058;font-weight:bold">&lt;&lt;~</span><span style="color:#fdbc4b;font-weight:bold">HEREDOC</span>
<span style="color:#a43340"> Hello!!</span>
<span style="color:#a43340"> </span><span style="color:#fdbc4b;font-weight:bold">HEREDOC</span>
<span style="color:#7a7c7d"># HEREDOC with backticks</span>
<span style="color:#3f8058;font-weight:bold">&lt;&lt;</span><span style="color:#fdbc4b;font-weight:bold">`HEREDOC`</span>
<span style="color:#a43340"> echo "hello"</span>
<span style="color:#fdbc4b;font-weight:bold">HEREDOC</span>
<span style="color:#7a7c7d"># do not highlight HEREDOC markers after the "class" keyword</span>
<span style="color:#7a7c7d"># (singleton class definition) (bug: #358273)</span>
<span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;</span><span style="color:#2980b9">Foo</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#2980b9">Object</span><span style="color:#2980b9">.</span><span style="color:#2980b9">new</span>
<span style="color:#27ae60">attr_accessor</span> <span style="color:#da4453">:foo</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
singleton_class <span style="color:#3f8058;font-weight:bold">=</span> ( <span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#3f8058;font-weight:bold">&lt;&lt;</span>foo; <span style="color:#f67400">self</span>; <span style="color:#fdbc4b;font-weight:bold">end</span> )
<span style="color:#7a7c7d"># highlight regular expressions after ": " (bug: #361875)</span>
get <span style="color:#da4453">'files/:slug/:filename'</span>, <span style="color:#da4453">to:</span> <span style="color:#da4453">'files#download'</span>, <span style="color:#da4453">slug:</span> <span style="color:#da4453">/^[a-z]+$/</span>, <span style="color:#da4453">filename:</span> <span style="color:#27ae60">%r|</span><span style="color:#da4453">^[/</span><span style="color:#3daee9">\s</span><span style="color:#da4453">]+$</span><span style="color:#27ae60">|</span>
<span style="color:#27ae60">@@hello</span><span style="color:#3f8058;font-weight:bold">!:</span> <span style="color:#da4453">/regexp/</span>
<span style="color:#da4453">[]=:</span> <span style="color:#27ae60">%r!</span><span style="color:#da4453">regexp</span><span style="color:#27ae60">!</span>
<span style="color:#7a7c7d"># refinements and its usage</span>
<span style="color:#fdbc4b;font-weight:bold">module</span> <span style="color:#2980b9">Constantize</span>
<span style="color:#8e44ad;font-weight:bold">refine</span> <span style="color:#2980b9">String</span> <span style="color:#fdbc4b;font-weight:bold">do</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> constantize
<span style="color:#3f8058;font-weight:bold">::</span><span style="color:#2980b9">Kernel</span><span style="color:#2980b9">.</span><span style="color:#2980b9">const_get</span>(<span style="color:#f67400">self</span>)
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#2980b9">MyClass</span>
<span style="color:#8e44ad;font-weight:bold">using</span> <span style="color:#2980b9">Constantize</span>
<span style="color:#27aeae;font-weight:bold">SOME_CONST</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"Kate is cool!"</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> <span style="color:#f67400">self</span><span style="color:#2980b9">.</span><span style="color:#2980b9">method_using_refinement</span>
<span style="color:#f44f4f">"MyClass::SOME_CONST"</span><span style="color:#2980b9">.</span><span style="color:#2980b9">constantize</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="color:#8e44ad;font-weight:bold">puts</span> <span style="color:#2980b9">MyClass</span><span style="color:#2980b9">.</span><span style="color:#2980b9">method_using_refinement</span>
<span style="color:#fdbc4b;font-weight:bold">class</span> <span style="color:#2980b9">Path</span>
<span style="color:#fdbc4b;font-weight:bold">def</span> <span style="color:#3f8058;font-weight:bold">+</span>(other) <span style="color:#fdbc4b;font-weight:bold">end</span>
<span style="font-weight:bold">alias</span> <span style="color:#3f8058;font-weight:bold">/</span> <span style="color:#3f8058;font-weight:bold">+</span>
<span style="color:#fdbc4b;font-weight:bold">end</span>
test_ok(<span style="color:#fdbc4b;font-weight:bold">if</span> <span style="color:#27aeae">$x</span> <span style="color:#3f8058;font-weight:bold">==</span> <span style="color:#27aeae">$x</span> <span style="color:#fdbc4b;font-weight:bold">then</span> <span style="color:#f67400">true</span> <span style="color:#fdbc4b;font-weight:bold">else</span> <span style="color:#f67400">false</span> <span style="color:#fdbc4b;font-weight:bold">end</span>)
foo?(<span style="color:#3daee9">?</span><span style="color:#3daee9">a</span> <span style="color:#3f8058;font-weight:bold">?</span> <span style="color:#f67400">1</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#da4453">:a</span>) <span style="color:#7a7c7d"># or</span>
foo?<span style="color:#3daee9">?</span><span style="color:#3daee9">a</span><span style="color:#3f8058;font-weight:bold">?</span><span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#da4453">:a</span>
foo?(<span style="color:#3daee9">?</span><span style="color:#3daee9">a</span> <span style="color:#3f8058;font-weight:bold">?</span> <span style="color:#f67400">1</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#f67400">2</span>) <span style="color:#7a7c7d"># or</span>
foo?<span style="color:#3daee9">?</span><span style="color:#3daee9">a</span><span style="color:#3f8058;font-weight:bold">?</span><span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#f67400">2</span>
<span style="color:#f44f4f">"</span><span style="color:#3daee9">#{</span><span style="color:#3f8058;font-weight:bold">{</span><span style="color:#da4453">a:</span><span style="color:#3f8058;font-weight:bold">}</span><span style="color:#3daee9">}</span><span style="color:#f44f4f">"</span>
<span style="color:#7a7c7d"># break substitution</span>
<span style="color:#f44f4f">"</span><span style="color:#3daee9">#{</span><span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">+</span><span style="color:#f67400">1</span><span style="color:#3f8058;font-weight:bold">+</span><span style="color:#3daee9">?</span><span style="color:#3daee9">}</span>;<span style="color:#fdbc4b;font-weight:bold">if</span><span style="color:#3daee9">}</span><span style="color:#f44f4f">"</span>
</pre></body></html>