Warning, file /frameworks/syntax-highlighting/autotests/html/highlight.rb.dark.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.rb</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Ruby) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d;"># This file is a testcase for the highlighting of Ruby code</span>
0008 <span style="color:#7a7c7d;"># It's not executable code, but a collection of code snippets</span>
0009 <span style="color:#7a7c7d;">#</span>
0010 
0011 <span style="color:#8e44ad;font-weight:bold;">require</span> <span style="color:#da4453;">'Config'</span>
0012 <span style="color:#8e44ad;font-weight:bold;">require</span> <span style="color:#da4453;">'DO/Clients'</span>
0013 <span style="color:#8e44ad;font-weight:bold;">require</span> <span style="color:#da4453;">'DO/DBClients'</span>
0014 
0015   <span style="color:#fdbc4b;font-weight:bold;">def</span> <span style="color:#27aeae;font-weight:bold;">CGI</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">escapeElement</span>(string, <span style="font-weight:bold;">*</span>elements)
0016     elements <span style="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;">.kind_of?</span>(<span style="color:#2980b9;">Array</span>)
0017     <span style="color:#fdbc4b;font-weight:bold;">unless</span> elements<span style="color:#2980b9;">.empty?</span>
0018       string<span style="color:#2980b9;">.gsub</span>(<span style="color:#da4453;">/&lt;\/?(?:</span><span style="color:#3daee9;">#{</span>elements<span style="color:#2980b9;">.join</span>(<span style="color:#f44f4f;">&quot;|&quot;</span>)<span style="color:#3daee9;">}</span><span style="color:#da4453;">)(?!\w)(?:.|\n)*?&gt;/ni</span>) <span style="color:#fdbc4b;font-weight:bold;">do</span>
0019         <span style="color:#27aeae;font-weight:bold;">CGI</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">escapeHTML</span>(<span style="color:#27aeae;font-weight:bold;">$&amp;</span>)
0020       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0021     <span style="color:#fdbc4b;font-weight:bold;">else</span>
0022       string
0023     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0024   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0025 
0026 <span style="color:#fdbc4b;font-weight:bold;">case</span> inputLine
0027   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f44f4f;">&quot;debug&quot;</span>
0028     dumpDebugInfo
0029     dumpSymbols
0030   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#da4453;">/p\s+(\w+)/</span>
0031     dumpVariable(<span style="color:#27aeae;">$1</span>)
0032   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f44f4f;">&quot;quit&quot;</span>, <span style="color:#f44f4f;">&quot;exit&quot;</span>
0033     <span style="color:#8e44ad;font-weight:bold;">exit</span>
0034   <span style="color:#fdbc4b;font-weight:bold;">else</span>
0035     <span style="color:#8e44ad;font-weight:bold;">print</span> <span style="color:#f44f4f;">&quot;Illegal command: </span><span style="color:#3daee9;">#{</span>inputLine<span style="color:#3daee9;">}</span><span style="color:#f44f4f;">&quot;</span>
0036 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0037 
0038 
0039 kind <span style="font-weight:bold;">=</span> <span style="color:#fdbc4b;font-weight:bold;">case</span> year <span style="color:#7a7c7d;">#hi there</span>
0040          <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">1850</span><span style="font-weight:bold;">..</span><span style="color:#f67400;">1889</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#f44f4f;">&quot;Blues&quot;</span>
0041          <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">1890</span><span style="font-weight:bold;">..</span><span style="color:#f67400;">1909</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#f44f4f;">&quot;Ragtime&quot;</span>
0042          <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">1910</span><span style="font-weight:bold;">..</span><span style="color:#f67400;">1929</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#f44f4f;">&quot;New Orleans Jazz&quot;</span>
0043          <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">1930</span><span style="font-weight:bold;">..</span><span style="color:#f67400;">1939</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#f44f4f;">&quot;Swing&quot;</span>
0044          <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">1940</span><span style="font-weight:bold;">..</span><span style="color:#f67400;">1950</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#f44f4f;">&quot;Bebop&quot;</span>
0045          <span style="color:#fdbc4b;font-weight:bold;">else</span>                 <span style="color:#f44f4f;">&quot;Jazz&quot;</span>
0046        <span style="color:#fdbc4b;font-weight:bold;">end</span>
0047 
0048   <span style="color:#7a7c7d;"># URL-encode a string.</span>
0049   <span style="color:#7a7c7d;">#   url_encoded_string = CGI::escape(&quot;'Stop!' said Fred&quot;)</span>
0050   <span style="color:#7a7c7d;">#      # =&gt; &quot;%27Stop%21%27+said+Fred&quot;</span>
0051   <span style="color:#fdbc4b;font-weight:bold;">def</span> <span style="color:#27aeae;font-weight:bold;">CGI</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">escape</span>(string)
0052     string<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>
0053       <span style="color:#3daee9;">'%'</span> <span style="font-weight:bold;">+</span> <span style="color:#27aeae;">$1</span><span style="color:#2980b9;">.unpack</span>(<span style="color:#da4453;">'H2'</span> <span style="font-weight:bold;">*</span> <span style="color:#27aeae;">$1</span><span style="color:#2980b9;">.size</span>)<span style="color:#2980b9;">.join</span>(<span style="color:#3daee9;">'%'</span>)<span style="color:#2980b9;">.upcase</span>
0054     <span style="color:#fdbc4b;font-weight:bold;">end</span><span style="color:#2980b9;">.tr</span>(<span style="color:#3daee9;">' '</span>, <span style="color:#3daee9;">'+'</span>)
0055   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0056 
0057 
0058 <span style="color:#7a7c7d;"># Class ClientManager</span>
0059 <span style="color:#7a7c7d;">#</span>
0060 <span style="color:#7a7c7d;"># definition : Import, store and export the various data used by the application.</span>
0061 <span style="color:#7a7c7d;"># This class is the sole interface between the application and the underlying database.</span>
0062 
0063 mon, day, year <span style="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;">/(\d\d)-(\d\d)-(\d\d)/</span>
0064 <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;a = </span><span style="color:#3daee9;">#{</span>a<span style="color:#3daee9;">}</span><span style="color:#f44f4f;">&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> fDebug
0065 <span style="color:#8e44ad;font-weight:bold;">print</span> total <span style="color:#fdbc4b;font-weight:bold;">unless</span> total <span style="font-weight:bold;">==</span> <span style="color:#f67400;">0</span>
0066 
0067 <span style="color:#fdbc4b;font-weight:bold;">while</span> <span style="color:#8e44ad;font-weight:bold;">gets</span>
0068   <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>
0069   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>
0070 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0071 
0072 <span style="color:#fdbc4b;font-weight:bold;">if</span> artist <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;John Coltrane&quot;</span> <span style="color:#7a7c7d;">#hi there</span>
0073   artist <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;'Trane&quot;</span> <span style="color:#7a7c7d;">#hi there</span>
0074 <span style="color:#fdbc4b;font-weight:bold;">end</span> <span style="color:#fdbc4b;font-weight:bold;">unless</span> nicknames <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;no&quot;</span> <span style="color:#7a7c7d;">#hi there</span>
0075 
0076 handle <span style="color:#fdbc4b;font-weight:bold;">= if</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Gillespie&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> <span style="color:#7a7c7d;">#hi there</span>
0077            <span style="color:#f44f4f;">&quot;Dizzy&quot;</span>
0078          <span style="color:#fdbc4b;font-weight:bold;">elsif</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Parker&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0079            <span style="color:#f44f4f;">&quot;Bird&quot;</span>
0080          <span style="color:#fdbc4b;font-weight:bold;">else</span> <span style="color:#7a7c7d;">#hi there</span>
0081            <span style="color:#f44f4f;">&quot;unknown&quot;</span>
0082          <span style="color:#fdbc4b;font-weight:bold;">end</span>
0083 
0084 <span style="color:#fdbc4b;font-weight:bold;">if</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Gillespie&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>  handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Dizzy&quot;</span>
0085 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Parker&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>  handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Bird&quot;</span>
0086 <span style="color:#fdbc4b;font-weight:bold;">else</span>  handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;unknown&quot;</span>
0087 <span style="color:#fdbc4b;font-weight:bold;">end</span> <span style="color:#7a7c7d;">#hi there</span>
0088 
0089 <span style="color:#fdbc4b;font-weight:bold;">if</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Gillespie&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0090   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Dizzy&quot;</span>
0091 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Parker&quot;</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0092   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Bird&quot;</span>
0093 <span style="color:#fdbc4b;font-weight:bold;">else</span>
0094   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;unknown&quot;</span>
0095 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0096 
0097 <span style="color:#fdbc4b;font-weight:bold;">if</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Gillespie&quot;</span>
0098   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Dizzy&quot;</span>
0099 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> aSong<span style="color:#2980b9;">.artist</span> <span style="font-weight:bold;">==</span> <span style="color:#f44f4f;">&quot;Parker&quot;</span>
0100   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Bird&quot;</span>
0101 <span style="color:#fdbc4b;font-weight:bold;">else</span>
0102   handle <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;unknown&quot;</span>
0103 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0104 
0105  <span style="color:#fdbc4b;font-weight:bold;">case</span> line
0106   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#da4453;">/title=(.*)/</span>
0107     <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;Title is </span><span style="color:#3daee9;">#$1</span><span style="color:#f44f4f;">&quot;</span>
0108   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#da4453;">/track=(.*)/</span>
0109     <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;Track is </span><span style="color:#3daee9;">#$1</span><span style="color:#f44f4f;">&quot;</span>
0110   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#da4453;">/artist=(.*)/</span>
0111     <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;Artist is </span><span style="color:#3daee9;">#$1</span><span style="color:#f44f4f;">&quot;</span>
0112 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0113 
0114 <span style="color:#fdbc4b;font-weight:bold;">case</span> shape
0115   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Square</span>, <span style="color:#2980b9;">Rectangle</span>
0116     <span style="color:#7a7c7d;"># ...</span>
0117   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Circle</span>
0118     <span style="color:#7a7c7d;"># ...</span>
0119   <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Triangle</span>
0120     <span style="color:#7a7c7d;"># ...</span>
0121   <span style="color:#fdbc4b;font-weight:bold;">else</span>
0122     <span style="color:#7a7c7d;"># ...</span>
0123 <span style="color:#fdbc4b;font-weight:bold;">end</span> 
0124 
0125 
0126 <span style="color:#fdbc4b;font-weight:bold;">until</span> playList<span style="color:#2980b9;">.duration</span> <span style="font-weight:bold;">&gt;</span> <span style="color:#f67400;">60</span> <span style="color:#7a7c7d;">#hi there</span>
0127   playList<span style="color:#2980b9;">.add</span>(songList<span style="color:#2980b9;">.pop</span>)
0128 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0129 
0130 <span style="color:#f67400;">3</span><span style="color:#2980b9;">.times</span> <span style="color:#fdbc4b;font-weight:bold;">do</span>
0131   <span style="color:#8e44ad;font-weight:bold;">print</span> <span style="color:#f44f4f;">&quot;Ho! &quot;</span>
0132 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0133 
0134 <span style="color:#8e44ad;font-weight:bold;">loop</span> <span style="font-weight:bold;">{</span>
0135   <span style="color:#7a7c7d;"># block ...</span>
0136 <span style="font-weight:bold;">}</span>
0137 
0138 songList<span style="color:#2980b9;">.each</span> <span style="color:#fdbc4b;font-weight:bold;">do</span> <span style="font-weight:bold;">|</span>aSong<span style="font-weight:bold;">|</span>
0139   aSong<span style="color:#2980b9;">.play</span>
0140 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0141 
0142 <span style="color:#fdbc4b;font-weight:bold;">for</span> aSong <span style="color:#fdbc4b;font-weight:bold;">in</span> songList
0143   aSong<span style="color:#2980b9;">.play</span>
0144 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0145 
0146 <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>
0147   <span style="color:#8e44ad;font-weight:bold;">print</span> i, <span style="color:#f44f4f;">&quot; &quot;</span>
0148 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0149 <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="font-weight:bold;">..</span><span style="color:#f67400;">3</span>
0150   <span style="color:#8e44ad;font-weight:bold;">print</span> i, <span style="color:#f44f4f;">&quot; &quot;</span>
0151 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0152 <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;">.open</span>(<span style="color:#f44f4f;">&quot;ordinal&quot;</span>)<span style="color:#2980b9;">.find_all</span> <span style="font-weight:bold;">{</span> <span style="font-weight:bold;">|</span>l<span style="font-weight:bold;">|</span> l <span style="font-weight:bold;">=~</span> <span style="color:#da4453;">/d$/</span><span style="font-weight:bold;">}</span>
0153   <span style="color:#8e44ad;font-weight:bold;">print</span> i<span style="color:#2980b9;">.chomp</span>, <span style="color:#f44f4f;">&quot; &quot;</span>
0154 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0155 
0156 <span style="color:#fdbc4b;font-weight:bold;">class</span> <span style="color:#2980b9;">Periods</span>
0157   <span style="color:#fdbc4b;font-weight:bold;">def</span> each
0158     <span style="color:#fdbc4b;font-weight:bold;">yield</span> <span style="color:#f44f4f;">&quot;Classical&quot;</span>
0159     <span style="color:#fdbc4b;font-weight:bold;">yield</span> <span style="color:#f44f4f;">&quot;Jazz&quot;</span>
0160     <span style="color:#fdbc4b;font-weight:bold;">yield</span> <span style="color:#f44f4f;">&quot;Rock&quot;</span>
0161   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0162 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0163 
0164 
0165 periods <span style="font-weight:bold;">=</span> <span style="color:#2980b9;">Periods</span><span style="color:#2980b9;">.new</span>
0166 <span style="color:#fdbc4b;font-weight:bold;">for</span> genre <span style="color:#fdbc4b;font-weight:bold;">in</span> periods
0167   <span style="color:#8e44ad;font-weight:bold;">print</span> genre, <span style="color:#f44f4f;">&quot; &quot;</span>
0168 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0169 
0170 <span style="color:#fdbc4b;font-weight:bold;">while</span> <span style="color:#8e44ad;font-weight:bold;">gets</span>
0171   <span style="color:#fdbc4b;font-weight:bold;">next</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="color:#da4453;">/^\s*#/</span>   <span style="color:#7a7c7d;"># skip comments</span>
0172   <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>
0173                     <span style="color:#7a7c7d;"># substitute stuff in backticks and try again</span>
0174   <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="font-weight:bold;">{</span> <span style="color:#8e44ad;font-weight:bold;">eval</span>(<span style="color:#27aeae;">$1</span>) <span style="font-weight:bold;">}</span>
0175   <span style="color:#7a7c7d;"># process line ...</span>
0176 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0177 
0178 i<span style="font-weight:bold;">=</span><span style="color:#f67400;">0</span>
0179 <span style="color:#8e44ad;font-weight:bold;">loop</span> <span style="color:#fdbc4b;font-weight:bold;">do</span>
0180   i <span style="font-weight:bold;">+=</span> <span style="color:#f67400;">1</span>
0181   <span style="color:#fdbc4b;font-weight:bold;">next</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> i <span style="font-weight:bold;">&lt;</span> <span style="color:#f67400;">3</span>
0182   <span style="color:#8e44ad;font-weight:bold;">print</span> i
0183   <span style="color:#fdbc4b;font-weight:bold;">break</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> i <span style="font-weight:bold;">&gt;</span> <span style="color:#f67400;">4</span>
0184 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0185 
0186 <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="font-weight:bold;">..</span><span style="color:#f67400;">100</span>
0187   <span style="color:#8e44ad;font-weight:bold;">print</span> <span style="color:#f44f4f;">&quot;Now at </span><span style="color:#3daee9;">#{</span>i<span style="color:#3daee9;">}</span><span style="color:#f44f4f;">. Restart? &quot;</span>
0188   <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="font-weight:bold;">=~</span> <span style="color:#da4453;">/^y/i</span>
0189 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0190 
0191 <span style="color:#fdbc4b;font-weight:bold;">def</span> doUntil(cond)
0192   <span style="color:#fdbc4b;font-weight:bold;">yield</span>
0193   <span style="color:#fdbc4b;font-weight:bold;">retry</span> <span style="color:#fdbc4b;font-weight:bold;">unless</span> cond
0194 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0195 
0196 i <span style="font-weight:bold;">=</span> <span style="color:#f67400;">0</span>
0197 doUntil(i <span style="font-weight:bold;">&gt;</span> <span style="color:#f67400;">3</span>) <span style="font-weight:bold;">{</span>
0198   <span style="color:#8e44ad;font-weight:bold;">print</span> i, <span style="color:#f44f4f;">&quot; &quot;</span>
0199   i <span style="font-weight:bold;">+=</span> <span style="color:#f67400;">1</span>
0200 <span style="font-weight:bold;">}</span>
0201 
0202 <span style="color:#fdbc4b;font-weight:bold;">def</span> system_call
0203     <span style="color:#7a7c7d;"># ... code which throws SystemCallError</span>
0204 <span style="color:#fdbc4b;font-weight:bold;">rescue</span> <span style="color:#2980b9;">SystemCallError</span>
0205     <span style="color:#27aeae;font-weight:bold;">$stderr</span><span style="color:#2980b9;">.print</span> <span style="color:#f44f4f;">&quot;IO failed: &quot;</span> <span style="font-weight:bold;">+</span> <span style="color:#27aeae;font-weight:bold;">$!</span>
0206     opFile<span style="color:#2980b9;">.close</span>
0207     <span style="color:#2980b9;">File</span><span style="color:#2980b9;">.delete</span>(opName)
0208     <span style="color:#8e44ad;font-weight:bold;">raise</span>
0209 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0210 
0211 <span style="color:#fdbc4b;font-weight:bold;">class</span> <span style="color:#2980b9;">ClientManager</span>
0212     
0213     <span style="color:#7a7c7d;"># constructor</span>
0214     <span style="color:#fdbc4b;font-weight:bold;">def</span> initialize(dbase)
0215         <span style="color:#27ae60;">@dbClient</span> <span style="font-weight:bold;">=</span> <span style="color:#2980b9;">DBClient</span><span style="color:#2980b9;">.new</span>(dbase)
0216         <span style="color:#27ae60;">@clients</span> <span style="font-weight:bold;">=</span> <span style="color:#2980b9;">Clients</span><span style="color:#2980b9;">.new</span>
0217     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0218     
0219     <span style="color:#fdbc4b;font-weight:bold;">def</span> prout(a, b, xy<span style="font-weight:bold;">=</span><span style="color:#f44f4f;">&quot;jj&quot;</span>) <span style="color:#f67400;">24</span> <span style="color:#fdbc4b;font-weight:bold;">end</span> 
0220     <span style="color:#7a7c7d;">###############################################################</span>
0221     <span style="color:#7a7c7d;">#</span>
0222     <span style="color:#7a7c7d;"># CLIENTS SECTION</span>
0223     <span style="color:#7a7c7d;">#</span>
0224     <span style="color:#7a7c7d;">###############################################################</span>
0225     
0226     <span style="color:#7a7c7d;"># update the clients object by retrieving the related data from the database</span>
0227     <span style="color:#7a7c7d;"># returns the number of clients</span>
0228     <span style="color:#fdbc4b;font-weight:bold;">def</span> refreshClients
0229         <span style="color:#27ae60;">@clients</span><span style="color:#2980b9;">.clean</span>
0230         <span style="color:#fdbc4b;font-weight:bold;">unless</span> <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.nil?</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0231             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.selectClient.each</span> <span style="color:#fdbc4b;font-weight:bold;">do</span> <span style="font-weight:bold;">|</span>row<span style="font-weight:bold;">|</span>
0232                 <span style="color:#27ae60;">@clients</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>)
0233             <span style="color:#fdbc4b;font-weight:bold;">end</span>
0234         <span style="color:#fdbc4b;font-weight:bold;">else</span>
0235             <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;SqlQuery wasn't created : cannot read data from database&quot;</span>
0236         <span style="color:#fdbc4b;font-weight:bold;">end</span>
0237         <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#27ae60;">@clients</span><span style="color:#2980b9;">.length</span>
0238     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0239     
0240     <span style="color:#7a7c7d;"># insert a client in the database and refreshes the local clients object</span>
0241     <span style="color:#7a7c7d;"># we assume that none of the arguments is null</span>
0242     <span style="color:#7a7c7d;"># we assume that the client, identified by raison_sociale doesn't already exists</span>
0243     <span style="color:#fdbc4b;font-weight:bold;">def</span> addClient(raison_sociale, division, departement, adresse, cp, ville, nom_contact, tel_contact)
0244         id <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;0&quot;</span>
0245         <span style="color:#fdbc4b;font-weight:bold;">unless</span> <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.nil?</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0246             id <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.insertClient</span>(raison_sociale, division, departement, adresse, cp, ville, nom_contact,tel_contact)
0247         <span style="color:#fdbc4b;font-weight:bold;">else</span>
0248             <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;SqlQuery wasn't created : database update cannot be performed&quot;</span>
0249         <span style="color:#fdbc4b;font-weight:bold;">end</span>
0250         <span style="color:#27ae60;">@clients</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>
0251     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0252     
0253     <span style="color:#7a7c7d;"># deletes a client from the database and updates the local Clients object accordingly</span>
0254     <span style="color:#fdbc4b;font-weight:bold;">def</span> delClient(nomclient_brut)
0255         raison_sociale, div, dep <span style="font-weight:bold;">=</span> <span style="color:#2980b9;">Clients</span><span style="color:#2980b9;">.getIdentifiers</span>(nomclient_brut)
0256         listeContratsExp, listeContratsSup, listeContratsProd, listePropositionsExp, listePropositionsSup <span style="font-weight:bold;">=</span> <span style="font-weight:bold;">[]</span>
0257 
0258         listeContratsExp <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@contratsExpertise</span><span style="color:#2980b9;">.getContratsFromClient</span>(nomclient_brut)
0259         listeContratsSup <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@contratsSupport</span><span style="color:#2980b9;">.getContratsFromClient</span>(nomclient_brut)
0260         listeContratsProd <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@contratsProduits</span><span style="color:#2980b9;">.getContratsFromClient</span>(nomclient_brut)
0261         listePropositionsExp <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@propositionsExpertise</span><span style="color:#2980b9;">.getPropositionsFromClient</span>(nomclient_brut)
0262         listePropositionsSup <span style="font-weight:bold;">=</span> <span style="color:#27ae60;">@propositionsSupport</span><span style="color:#2980b9;">.getPropositionsFromClient</span>(nomclient_brut)
0263         
0264         <span style="color:#fdbc4b;font-weight:bold;">unless</span> <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.nil?</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0265             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deleteClient</span>(raison_sociale, div, dep)
0266             
0267             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deleteContracts</span>(<span style="color:#2980b9;">Config</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">EXPERTISE</span>,listeContratsExp) 
0268             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deleteContracts</span>(<span style="color:#2980b9;">Config</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">SUPPORT</span>,listeContratsSup)
0269             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deleteContracts</span>(<span style="color:#2980b9;">Config</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">PRODUIT</span>,listeContratsProd)
0270             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deletePropositions</span>(<span style="color:#2980b9;">Config</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">EXPERTISE</span>,listePropositionsExp)
0271             <span style="color:#27ae60;">@sqlQuery</span><span style="color:#2980b9;">.deletePropositions</span>(<span style="color:#2980b9;">Config</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">SUPPORT</span>,listePropositionsSup)
0272         <span style="color:#fdbc4b;font-weight:bold;">else</span>
0273             <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#f44f4f;">&quot;SqlQuery wasn't created : database update cannot be performed&quot;</span>
0274         <span style="color:#fdbc4b;font-weight:bold;">end</span>
0275         <span style="color:#27ae60;">@clients</span><span style="color:#2980b9;">.delClient</span>(raison_sociale,div,dep)
0276     
0277         <span style="color:#27ae60;">@contratsExpertise</span><span style="color:#2980b9;">.deleteContracts</span>(listeContratsExp)
0278         <span style="color:#27ae60;">@contratsSupport</span><span style="color:#2980b9;">.deleteContracts</span>(listeContratsSup)
0279         <span style="color:#27ae60;">@contratsProduits</span><span style="color:#2980b9;">.deleteContracts</span>(listeContratsProd)
0280         <span style="color:#27ae60;">@propositionsExpertise</span><span style="color:#2980b9;">.deletePropositions</span>(listePropositionsExp)
0281         <span style="color:#27ae60;">@propositionsSupport</span><span style="color:#2980b9;">.deletePropositions</span>(listePropositionsSup)
0282     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0283 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0284 
0285   <span style="color:#7a7c7d;"># Mixin module for HTML version 3 generation methods.</span>
0286   <span style="color:#fdbc4b;font-weight:bold;">module</span> <span style="color:#2980b9;">Html3</span> <span style="color:#7a7c7d;"># :nodoc:</span>
0287 
0288     <span style="color:#7a7c7d;"># The DOCTYPE declaration for this version of HTML</span>
0289     <span style="color:#fdbc4b;font-weight:bold;">def</span> doctype
0290 <span style="color:#27ae60;">      %|</span><span style="color:#f44f4f;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 3.2 Final//EN&quot;&gt;</span><span style="color:#27ae60;">|</span>
0291     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0292 
0293     <span style="color:#7a7c7d;"># Initialise the HTML generation methods for this version.</span>
0294     <span style="color:#fdbc4b;font-weight:bold;">def</span> element_init
0295       <span style="color:#8e44ad;font-weight:bold;">extend</span> <span style="color:#2980b9;">TagMaker</span>
0296       methods <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;&quot;</span>
0297       <span style="color:#7a7c7d;"># - -</span>
0298       <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:#f44f4f;"> A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG</span>
0299 <span style="color:#f44f4f;">          DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP</span>
0300 <span style="color:#f44f4f;">          APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE</span>
0301 <span style="color:#f44f4f;">          STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE</span>
0302 <span style="color:#f44f4f;">          CAPTION </span><span style="color:#27ae60;">]</span>
0303         methods <span style="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>
0304 <span style="color:#a43340;">          def </span><span style="color:#3daee9;">#{</span>element<span style="color:#2980b9;">.downcase</span><span style="color:#3daee9;">}</span><span style="color:#a43340;">(attributes = {})</span>
0305 <span style="color:#a43340;">        </span><span style="color:#fdbc4b;font-weight:bold;">BEGIN</span>
0306           <span style="color:#fdbc4b;font-weight:bold;">end</span>
0307         <span style="color:#fdbc4b;font-weight:bold;">END</span>
0308       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0309 
0310       <span style="color:#7a7c7d;"># - O EMPTY</span>
0311       <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:#f44f4f;"> IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT</span>
0312 <span style="color:#f44f4f;">          ISINDEX META </span><span style="color:#27ae60;">]</span>
0313         methods <span style="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>
0314 <span style="color:#a43340;">          def </span><span style="color:#3daee9;">#{</span>element<span style="color:#2980b9;">.downcase</span><span style="color:#3daee9;">}</span><span style="color:#a43340;">(attributes = {})</span>
0315 <span style="color:#a43340;">        </span><span style="color:#fdbc4b;font-weight:bold;">BEGIN</span>
0316           <span style="color:#fdbc4b;font-weight:bold;">end</span>
0317         <span style="color:#fdbc4b;font-weight:bold;">END</span>
0318       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0319 
0320       <span style="color:#7a7c7d;"># O O or - O</span>
0321       <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:#f44f4f;"> HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr</span>
0322 <span style="color:#f44f4f;">          th td </span><span style="color:#27ae60;">]</span>
0323         methods <span style="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>
0324 <span style="color:#a43340;">          def </span><span style="color:#3daee9;">#{</span>element<span style="color:#2980b9;">.downcase</span><span style="color:#3daee9;">}</span><span style="color:#a43340;">(attributes = {})</span>
0325 <span style="color:#a43340;">        </span><span style="color:#fdbc4b;font-weight:bold;">BEGIN</span>
0326           <span style="color:#fdbc4b;font-weight:bold;">end</span>
0327         <span style="color:#fdbc4b;font-weight:bold;">END</span>
0328       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0329       <span style="color:#8e44ad;font-weight:bold;">eval</span>(methods)
0330     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0331 
0332   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0333 
0334 <span style="color:#7a7c7d;"># following snippet from Webrick's log.rb</span>
0335 <span style="color:#7a7c7d;"># notice the erronous handling of the query method is_a?</span>
0336 <span style="color:#fdbc4b;font-weight:bold;">def</span> <span style="color:#8e44ad;font-weight:bold;">format</span>(arg)
0337      str <span style="color:#fdbc4b;font-weight:bold;">= if</span> arg<span style="color:#2980b9;">.is_a?</span>(<span style="color:#2980b9;">Exception</span>)
0338         <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">#{</span>arg<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;">.message</span><span style="color:#3daee9;">}</span><span style="color:#f44f4f;">\n\t&quot;</span> <span style="font-weight:bold;">&lt;&lt;</span>
0339         arg<span style="color:#2980b9;">.backtrace.join</span>(<span style="color:#f44f4f;">&quot;\n\t&quot;</span>) <span style="font-weight:bold;">&lt;&lt;</span> <span style="color:#f44f4f;">&quot;\n&quot;</span>
0340       <span style="color:#fdbc4b;font-weight:bold;">elsif</span> arg<span style="color:#2980b9;">.respond_to?</span>(<span style="color:#da4453;">:to_str</span>)
0341         arg<span style="color:#2980b9;">.to_str</span>
0342       <span style="color:#fdbc4b;font-weight:bold;">else</span>
0343         arg<span style="color:#2980b9;">.inspect</span>
0344       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0345 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0346 
0347 <span style="color:#7a7c7d;"># following snippet from Webrick's httputils.rb</span>
0348 <span style="color:#7a7c7d;"># Splitting regexps on several lines might be bad form,</span>
0349 <span style="color:#7a7c7d;"># but not illegal in Ruby. </span>
0350 <span style="color:#7a7c7d;"># This should probably be supported in the highlighting</span>
0351 <span style="color:#fdbc4b;font-weight:bold;">def</span> split_header_value(str)
0352       str<span style="color:#2980b9;">.scan</span>(<span style="color:#da4453;">/((?:&quot;(?:\\.|[^&quot;])+?&quot;|[^&quot;,]+)+)</span>
0353 <span style="color:#da4453;">                (?:,\s*|\Z)/xn</span>)<span style="color:#2980b9;">.collect</span><span style="font-weight:bold;">{|</span>v<span style="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="font-weight:bold;">}</span>
0354 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0355 
0356 <span style="color:#7a7c7d;"># snippet from Net::Telnet</span>
0357 string<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>
0358 <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>
0359 <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>
0360 <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>
0361 <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>
0362 <span style="color:#da4453;">                 )/xno</span>)
0363 
0364 <span style="color:#7a7c7d;"># following snippet from Webrick's httpresponse.rb</span>
0365 <span style="color:#7a7c7d;"># the HEREDOC is not recognized as such</span>
0366 <span style="color:#27ae60;">@body</span> <span style="font-weight:bold;">&lt;&lt; &lt;&lt;-</span><span style="color:#fdbc4b;font-weight:bold;">_end_of_html_</span>
0367 <span style="color:#a43340;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot;&gt;</span>
0368 <span style="color:#a43340;">&lt;HTML&gt;</span>
0369 <span style="color:#a43340;">  &lt;HEAD&gt;&lt;TITLE&gt;</span><span style="color:#3daee9;">#{</span><span style="color:#2980b9;">HTMLUtils</span><span style="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&gt;&lt;/HEAD&gt;</span>
0370 <span style="color:#a43340;">  &lt;BODY&gt;</span>
0371 <span style="color:#a43340;">    &lt;H1&gt;</span><span style="color:#3daee9;">#{</span><span style="color:#2980b9;">HTMLUtils</span><span style="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&gt;</span>
0372 <span style="color:#a43340;">    </span><span style="color:#3daee9;">#{</span><span style="color:#2980b9;">HTMLUtils</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">escape</span>(ex<span style="color:#2980b9;">.message</span>)<span style="color:#3daee9;">}</span>
0373 <span style="color:#a43340;">    &lt;HR&gt;</span>
0374 <span style="color:#fdbc4b;font-weight:bold;">_end_of_html_</span>
0375 
0376 
0377 <span style="color:#7a7c7d;"># snippet from Webrick's httpproxy.rb</span>
0378 <span style="color:#7a7c7d;"># here we should make sure that the symbol definition ':' doesn't override</span>
0379 <span style="color:#7a7c7d;"># the module operator '::'</span>
0380 <span style="color:#2980b9;">Net</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">HTTP</span><span style="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="font-weight:bold;">&lt;</span> <span style="color:#f44f4f;">&quot;1.7&quot;</span>
0381 
0382 <span style="color:#7a7c7d;"># snippet from Webrick's cookie.rb</span>
0383 <span style="color:#7a7c7d;"># the beginning of the regexp is erronously highlighted like an operator</span>
0384 key, val <span style="font-weight:bold;">=</span> x<span style="color:#2980b9;">.split</span>(<span style="color:#da4453;">/=/</span>,<span style="color:#f67400;">2</span>)
0385 
0386 <span style="color:#7a7c7d;"># the following are division operators</span>
0387 <span style="color:#7a7c7d;"># it's a bit tricky to keep the operator apart from the regexp</span>
0388 result <span style="font-weight:bold;">=</span> <span style="color:#f67400;">8</span> <span style="font-weight:bold;">/</span> <span style="color:#f67400;">4</span>
0389 result <span style="font-weight:bold;">/= </span>divisor
0390 
0391 <span style="color:#7a7c7d;"># 2008-06-01 regexp and division operator syntax has been fixed:</span>
0392 result <span style="font-weight:bold;">=</span> <span style="color:#f67400;">8</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">4</span>    <span style="color:#7a7c7d;"># division</span>
0393 result <span style="font-weight:bold;">=</span> <span style="color:#f67400;">8</span><span style="font-weight:bold;">/</span>foo  <span style="color:#7a7c7d;"># division</span>
0394 result <span style="font-weight:bold;">=</span> <span style="color:#da4453;">/8/</span>    <span style="color:#7a7c7d;"># regexp</span>
0395 result <span style="font-weight:bold;">=</span> <span style="color:#f67400;">8</span><span style="font-weight:bold;">/</span><span style="color:#da4453;">/4/</span>  <span style="color:#7a7c7d;"># division and regexp</span>
0396 
0397 <span style="color:#f67400;">10</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>           <span style="color:#7a7c7d;"># division</span>
0398 <span style="color:#f67400;">10</span><span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>          <span style="color:#7a7c7d;"># division</span>
0399 <span style="color:#f67400;">10</span> <span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>          <span style="color:#7a7c7d;"># division</span>
0400 <span style="color:#f67400;">10</span> <span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>         <span style="color:#7a7c7d;"># division</span>
0401 
0402 foo<span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>          <span style="color:#7a7c7d;"># division</span>
0403 foo<span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>         <span style="color:#7a7c7d;"># division</span>
0404 foo <span style="color:#da4453;">/10/</span>        <span style="color:#7a7c7d;"># regexp</span>
0405 foo <span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>        <span style="color:#7a7c7d;"># division</span>
0406 
0407 foo<span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>       <span style="color:#7a7c7d;"># both division</span>
0408 total<span style="font-weight:bold;">/</span>count<span style="font-weight:bold;">/</span><span style="color:#f67400;">2</span>   <span style="color:#7a7c7d;"># both division</span>
0409 total<span style="font-weight:bold;">/</span>(count<span style="font-weight:bold;">/</span><span style="color:#f67400;">2</span>) <span style="color:#7a7c7d;"># both division</span>
0410 
0411 <span style="color:#27ae60;">@foo</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>         <span style="color:#7a7c7d;"># division</span>
0412 <span style="color:#27ae60;">@foo</span> <span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>        <span style="color:#7a7c7d;"># division</span>
0413 
0414 <span style="color:#f44f4f;">&quot;hello&quot;</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>      <span style="color:#7a7c7d;"># division</span>
0415 <span style="color:#f44f4f;">&quot;hello&quot;</span> <span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>    <span style="color:#7a7c7d;"># division</span>
0416 
0417 <span style="color:#da4453;">/regexp/</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>     <span style="color:#7a7c7d;"># division</span>
0418 <span style="color:#da4453;">/regexp/</span> <span style="font-weight:bold;">/</span> <span style="color:#f67400;">10</span>   <span style="color:#7a7c7d;"># division</span>
0419 
0420 <span style="color:#2980b9;">Math</span><span style="font-weight:bold;">::</span><span style="color:#27aeae;">PI</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">10</span>     <span style="color:#7a7c7d;"># division</span>
0421 <span style="color:#2980b9;">Math</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">foo</span> <span style="color:#da4453;">/rx/</span>  <span style="color:#7a7c7d;"># regexp</span>
0422 
0423 <span style="color:#7a7c7d;"># 2008-06-05 similar fix for modulo operator:</span>
0424 
0425 <span style="color:#f67400;">10</span><span style="font-weight:bold;">%</span><span style="color:#f67400;">4</span>            <span style="color:#7a7c7d;"># modulo</span>
0426 <span style="color:#f67400;">10</span> <span style="font-weight:bold;">%</span><span style="color:#f67400;">4</span>           <span style="color:#7a7c7d;"># modulo</span>
0427 <span style="color:#f67400;">10</span><span style="font-weight:bold;">%</span> <span style="color:#f67400;">4</span>           <span style="color:#7a7c7d;"># modulo</span>
0428 <span style="color:#f67400;">10</span> <span style="font-weight:bold;">%</span> <span style="color:#f67400;">4</span>          <span style="color:#7a7c7d;"># modulo</span>
0429 
0430 foo<span style="font-weight:bold;">%</span><span style="color:#f67400;">4</span>           <span style="color:#7a7c7d;"># modulo</span>
0431 <span style="color:#7a7c7d;"># foo %4          # illegal %string</span>
0432 foo<span style="font-weight:bold;">%</span> <span style="color:#f67400;">4</span>          <span style="color:#7a7c7d;"># modulo</span>
0433 foo <span style="font-weight:bold;">%</span> <span style="color:#f67400;">4</span>         <span style="color:#7a7c7d;"># modulo</span>
0434 
0435 foo <span style="font-weight:bold;">%</span> (<span style="color:#f67400;">4</span>)       <span style="color:#7a7c7d;"># modulo</span>
0436 
0437 foo <span style="color:#27ae60;">%(</span><span style="color:#f44f4f;">4</span><span style="color:#27ae60;">)</span>        <span style="color:#7a7c7d;"># %string</span>
0438 foo <span style="color:#27ae60;">%q(</span><span style="color:#da4453;">4</span><span style="color:#27ae60;">)</span>       <span style="color:#7a7c7d;"># %string</span>
0439 foo <span style="color:#27ae60;">%Q(</span><span style="color:#f44f4f;">4</span><span style="color:#27ae60;">)</span>       <span style="color:#7a7c7d;"># %string</span>
0440 foo <span style="color:#27ae60;">%%</span><span style="color:#f44f4f;">4</span><span style="color:#27ae60;">%</span>        <span style="color:#7a7c7d;"># %string</span>
0441 
0442 foo <span style="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>
0443 foo <span style="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>
0444 
0445 <span style="color:#7a7c7d;"># mix in any way you want</span>
0446 result <span style="font-weight:bold;">=</span> <span style="color:#f67400;">10</span><span style="font-weight:bold;">/</span><span style="color:#da4453;">/regexp/</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">20</span><span style="font-weight:bold;">/</span>foo<span style="font-weight:bold;">/</span><span style="color:#da4453;">/regexp/</span><span style="font-weight:bold;">/</span><span style="color:#f67400;">20</span>
0447 
0448 <span style="color:#7a7c7d;"># test cases for general delimited input</span>
0449 <span style="color:#7a7c7d;"># quoted strings</span>
0450 <span style="color:#27ae60;">%Q|</span><span style="color:#f44f4f;">this is a string</span><span style="color:#27ae60;">|</span>
0451 <span style="color:#27ae60;">%Q{</span><span style="color:#f44f4f;">this is a string</span><span style="color:#27ae60;">}</span>
0452 <span style="color:#27ae60;">%Q(</span><span style="color:#f44f4f;">this is a string</span><span style="color:#27ae60;">)</span>
0453 <span style="color:#27ae60;">%Q&lt;</span><span style="color:#f44f4f;">this is a string</span><span style="color:#27ae60;">&gt;</span>
0454 <span style="color:#27ae60;">%Q[</span><span style="color:#f44f4f;">this is a string</span><span style="color:#27ae60;">]</span>
0455 
0456 <span style="color:#27ae60;">%|</span><span style="color:#f44f4f;">also a string</span><span style="color:#27ae60;">|</span>
0457 <span style="color:#27ae60;">%{</span><span style="color:#f44f4f;">also a string</span><span style="color:#27ae60;">}</span>
0458 <span style="color:#27ae60;">%(</span><span style="color:#f44f4f;">also a string</span><span style="color:#27ae60;">)</span>
0459 <span style="color:#27ae60;">%&lt;</span><span style="color:#f44f4f;">also a string</span><span style="color:#27ae60;">&gt;</span>
0460 <span style="color:#27ae60;">%[</span><span style="color:#f44f4f;">also a string</span><span style="color:#27ae60;">]</span>
0461 
0462 <span style="color:#7a7c7d;"># apostrophed strings</span>
0463 <span style="color:#27ae60;">%q|</span><span style="color:#da4453;">apostrophed</span><span style="color:#27ae60;">|</span>
0464 <span style="color:#27ae60;">%q{</span><span style="color:#da4453;">apostrophed</span><span style="color:#27ae60;">}</span>
0465 <span style="color:#27ae60;">%q(</span><span style="color:#da4453;">apostrophed</span><span style="color:#27ae60;">)</span>
0466 <span style="color:#27ae60;">%q&lt;</span><span style="color:#da4453;">apostrophed</span><span style="color:#27ae60;">&gt;</span>
0467 <span style="color:#27ae60;">%q[</span><span style="color:#da4453;">apostrophed</span><span style="color:#27ae60;">]</span>
0468 
0469 <span style="color:#7a7c7d;"># regular expressions</span>
0470 <span style="color:#27ae60;">%r{</span><span style="color:#da4453;">expression</span><span style="color:#27ae60;">}</span>
0471 <span style="color:#27ae60;">%r(</span><span style="color:#da4453;">expression</span><span style="color:#27ae60;">)</span>
0472 <span style="color:#27ae60;">%r&lt;</span><span style="color:#da4453;">expression</span><span style="color:#27ae60;">&gt;</span>
0473 <span style="color:#27ae60;">%r[</span><span style="color:#da4453;">expression</span><span style="color:#27ae60;">]</span>
0474 <span style="color:#27ae60;">%r|</span><span style="color:#da4453;">expression</span><span style="color:#27ae60;">|</span>
0475 
0476 <span style="color:#7a7c7d;"># shell commands</span>
0477 <span style="color:#27ae60;">%x{</span><span style="color:#c45b00;">ls -l</span><span style="color:#27ae60;">}</span>
0478 <span style="color:#27ae60;">%x(</span><span style="color:#c45b00;">ls -l</span><span style="color:#27ae60;">)</span>
0479 <span style="color:#27ae60;">%x&lt;</span><span style="color:#c45b00;">ls -l</span><span style="color:#27ae60;">&gt;</span>
0480 <span style="color:#27ae60;">%x[</span><span style="color:#c45b00;">ls -l</span><span style="color:#27ae60;">]</span>
0481 
0482 <span style="color:#7a7c7d;"># sometimes it's useful to have the command on multiple lines</span>
0483 <span style="color:#27ae60;">%x{</span><span style="color:#c45b00;">ls -l |</span>
0484 <span style="color:#c45b00;">grep test </span><span style="color:#27ae60;">}</span>
0485 
0486 <span style="color:#7a7c7d;"># alternative syntax</span>
0487 <span style="color:#c45b00;">`ls -l`</span>
0488 <span style="color:#c45b00;">`echo ' '`</span>
0489 
0490 <span style="color:#7a7c7d;"># token array</span>
0491 <span style="color:#27ae60;">%w{</span><span style="color:#f44f4f;">one two three</span><span style="color:#27ae60;">}</span>
0492 <span style="color:#27ae60;">%w(</span><span style="color:#f44f4f;">one two three</span><span style="color:#27ae60;">)</span>
0493 <span style="color:#27ae60;">%w&lt;</span><span style="color:#f44f4f;">one two three</span><span style="color:#27ae60;">&gt;</span>
0494 <span style="color:#27ae60;">%w[</span><span style="color:#f44f4f;">one two three</span><span style="color:#27ae60;">]</span>
0495 
0496 <span style="color:#7a7c7d;"># snippet from Net::IMAP</span>
0497 <span style="color:#7a7c7d;"># I object to putting String, Integer and Array into kernel methods.</span>
0498 <span style="color:#7a7c7d;"># While these classes are builtin in Ruby, this is an implementation detail</span>
0499 <span style="color:#7a7c7d;"># that should not be exposed to the user.</span>
0500 <span style="color:#7a7c7d;"># If we want to handle all std-lib classes, fine. But then they should be in their</span>
0501 <span style="color:#7a7c7d;"># own std-lib keyword category.</span>
0502 
0503 <span style="color:#fdbc4b;font-weight:bold;">def</span> send_data(data)
0504       <span style="color:#fdbc4b;font-weight:bold;">case</span> data
0505       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;">nil</span>
0506         put_string(<span style="color:#f44f4f;">&quot;NIL&quot;</span>)
0507       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">String</span>
0508         send_string_data(data)
0509       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Integer</span>
0510         send_number_data(data)
0511       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Array</span>
0512         send_list_data(data)
0513       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Time</span>
0514         send_time_data(data)
0515       <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#2980b9;">Symbol</span>
0516         send_symbol_data(data)
0517       <span style="color:#fdbc4b;font-weight:bold;">else</span>
0518         data<span style="color:#2980b9;">.send_data</span>(<span style="color:#f67400;">self</span>)
0519       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0520 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0521 
0522 <span style="color:#7a7c7d;"># snippet from Net::POP</span>
0523 <span style="color:#7a7c7d;"># class names can have numbers in them as long as they don't begin with numbers</span>
0524 <span style="color:#7a7c7d;"># Ruby doesn't internally really make much of a difference between a class name and a constant</span>
0525 
0526 <span style="color:#7a7c7d;"># class aliases</span>
0527   <span style="color:#27aeae;font-weight:bold;">POP</span> <span style="font-weight:bold;">=</span> <span style="color:#27aeae;font-weight:bold;">POP3</span>
0528   <span style="color:#2980b9;">POPSession</span>  <span style="font-weight:bold;">=</span> <span style="color:#27aeae;font-weight:bold;">POP3</span>
0529   <span style="color:#2980b9;">POP3Session</span> <span style="font-weight:bold;">=</span> <span style="color:#27aeae;font-weight:bold;">POP3</span>
0530 
0531 <span style="color:#7a7c7d;"># &quot;member access&quot;</span>
0532 <span style="color:#27aeae;font-weight:bold;">POP</span><span style="font-weight:bold;">::</span><span style="color:#2980b9;">Session</span>.<span style="color:#27aeae;">COUNT</span><span style="color:#2980b9;">.attribute.calc_with</span>(<span style="color:#f67400;">2</span>)<span style="font-weight:bold;">{</span> <span style="font-weight:bold;">|</span>arg<span style="font-weight:bold;">|</span> <span style="color:#8e44ad;font-weight:bold;">puts</span> arg <span style="font-weight:bold;">}</span>
0533 
0534 <span style="color:#7a7c7d;"># snippet from Net::SMTP</span>
0535 <span style="color:#7a7c7d;"># This breaks the code folding. I think we would need to</span>
0536 <span style="color:#7a7c7d;"># handle the '\' that continues the statement to the next line</span>
0537 <span style="color:#7a7c7d;"># in some way to make these kind of things not break something.</span>
0538 <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>\
0539                       <span style="color:#fdbc4b;font-weight:bold;">unless</span> user <span style="color:#fdbc4b;font-weight:bold;">and</span> secret
0540  
0541 <span style="color:#7a7c7d;"># string escapes must detect escaping the escape char</span>
0542 str <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;\\&quot;</span>
0543 str <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;\\\\&quot;</span>
0544 <span style="color:#7a7c7d;"># this is not part of the string</span>
0545 <span style="color:#27ae60;">%x{</span><span style="color:#c45b00;">echo \\\}\\</span><span style="color:#27ae60;">}</span> <span style="color:#7a7c7d;"># prints \}\</span>
0546 <span style="color:#7a7c7d;"># this is not part of the command</span>
0547 
0548 <span style="color:#7a7c7d;"># these are all symbols</span>
0549 <span style="color:#da4453;">:abc</span>
0550 <span style="color:#da4453;">:abc!</span>
0551 <span style="color:#da4453;">:abc?</span>
0552 <span style="color:#da4453;">:abc=</span>
0553 <span style="color:#da4453;">:[]</span>
0554 <span style="color:#da4453;">:[]=</span>
0555 <span style="color:#da4453;">:@abc</span>
0556 <span style="color:#da4453;">:@@abc</span>
0557 <span style="color:#da4453;">:$abc</span>
0558 
0559 <span style="color:#7a7c7d;"># squiggly HEREDOC</span>
0560 <span style="font-weight:bold;">    &lt;&lt;~</span><span style="color:#fdbc4b;font-weight:bold;">HEREDOC</span>
0561 <span style="color:#a43340;">      Hello!!</span>
0562 <span style="color:#a43340;">    </span><span style="color:#fdbc4b;font-weight:bold;">HEREDOC</span>
0563 
0564 <span style="color:#7a7c7d;"># HEREDOC with backticks</span>
0565 <span style="font-weight:bold;">&lt;&lt;</span><span style="color:#fdbc4b;font-weight:bold;">`HEREDOC`</span>
0566 <span style="color:#a43340;">    echo &quot;hello&quot;</span>
0567 <span style="color:#fdbc4b;font-weight:bold;">HEREDOC</span>
0568 
0569 <span style="color:#7a7c7d;"># do not highlight HEREDOC markers after the &quot;class&quot; keyword</span>
0570 <span style="color:#7a7c7d;"># (singleton class definition) (bug: #358273)</span>
0571 <span style="color:#fdbc4b;font-weight:bold;">class</span> <span style="font-weight:bold;">&lt;&lt;</span><span style="color:#2980b9;">Foo</span> <span style="font-weight:bold;">=</span> <span style="color:#2980b9;">Object</span><span style="color:#2980b9;">.new</span>
0572   <span style="color:#27ae60;">attr_accessor</span> <span style="color:#da4453;">:foo</span>
0573 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0574 singleton_class <span style="font-weight:bold;">=</span> ( <span style="color:#fdbc4b;font-weight:bold;">class</span> <span style="font-weight:bold;">&lt;&lt;</span>foo; <span style="color:#f67400;">self</span>; <span style="color:#fdbc4b;font-weight:bold;">end</span> )
0575 
0576 <span style="color:#7a7c7d;"># highlight regular expressions after &quot;: &quot; (bug: #361875)</span>
0577 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;">^[/\s]+$</span><span style="color:#27ae60;">|</span>
0578 <span style="color:#da4453;">@@hello!: </span><span style="color:#da4453;">/regexp/</span>
0579 <span style="color:#da4453;">[]=: </span><span style="color:#27ae60;">%r!</span><span style="color:#da4453;">regexp</span><span style="color:#27ae60;">!</span>
0580 
0581 <span style="color:#7a7c7d;"># refinements and its usage</span>
0582 <span style="color:#fdbc4b;font-weight:bold;">module</span> <span style="color:#2980b9;">Constantize</span>
0583   <span style="color:#8e44ad;font-weight:bold;">refine</span> <span style="color:#2980b9;">String</span> <span style="color:#fdbc4b;font-weight:bold;">do</span>
0584     <span style="color:#fdbc4b;font-weight:bold;">def</span> constantize
0585       <span style="font-weight:bold;">::</span><span style="color:#2980b9;">Kernel</span><span style="color:#2980b9;">.const_get</span>(<span style="color:#f67400;">self</span>)
0586     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0587   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0588 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0589 
0590 <span style="color:#fdbc4b;font-weight:bold;">class</span> <span style="color:#2980b9;">MyClass</span>
0591   <span style="color:#8e44ad;font-weight:bold;">using</span> <span style="color:#2980b9;">Constantize</span>
0592 
0593   <span style="color:#27aeae;font-weight:bold;">SOME_CONST</span> <span style="font-weight:bold;">=</span> <span style="color:#f44f4f;">&quot;Kate is cool!&quot;</span>
0594 
0595   <span style="color:#fdbc4b;font-weight:bold;">def</span> <span style="color:#f67400;">self</span><span style="color:#2980b9;">.method_using_refinement</span>
0596     <span style="color:#f44f4f;">&quot;MyClass::SOME_CONST&quot;</span><span style="color:#2980b9;">.constantize</span>
0597   <span style="color:#fdbc4b;font-weight:bold;">end</span>
0598 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0599 
0600 <span style="color:#8e44ad;font-weight:bold;">puts</span> <span style="color:#2980b9;">MyClass</span><span style="color:#2980b9;">.method_using_refinement</span>
0601 </pre></body></html>