feat: add missing KF6 framework recipes

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