<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
padding: 20px;
height: 100%;
width: 944px;
margin-left: auto;
margin-right: auto;
}
.fold {
width: 20px;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.number {
width: 45px;
float: left;
margin-right: 10px;
text-align: right;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line {
}
.content {
font-family: "Monospace";
font-size: 1em;
background: #3f3f3f;
color: White;
width: 944px;
padding: 20px;
height: 100%;
margin-left: auto;
margin-right: auto;
}
font.Alert {
color: Yellow;
font-weight: bold;
}
font.Annotation {
color: Yellow;
font-style: italic;
}
font.Attribute {
color: LightPink;
}
font.BaseN {
color: Gold;
}
font.BuiltIn {
color: Coral;
}
font.Char {
color: Cyan;
}
font.Comment {
color: Beige;
font-style: italic;
}
font.CommentVar {
color: LightBlue;
font-style: italic;
}
font.Constant {
color: White;
font-weight: bold;
}
font.ControlFlow {
color: DeepPink;
}
font.DataType {
color: CadetBlue;
}
font.DecVal {
color: MediumPurple;
font-weight: bold;
}
font.Documentation {
color: Gold;
font-style: italic;
}
font.Error {
color: Red;
font-weight: bold;
}
font.Extension {
color: DarkGray;
font-weight: bold;
}
font.Float {
color: DarkViolet;
font-weight: bold;
}
font.Function {
color: RosyBrown;
}
font.Import {
color: PaleVioletRed;
}
font.Information {
color: LightGreen;
font-style: italic;
}
font.Keyword {
color: LightGreen;
font-weight: bold;
}
font.Normal {
color: White;
}
font.Operator {
color: Magenta;
}
font.Others {
color: GreenYellow;
}
font.Preprocessor {
color: DarkSeaGreen ;
font-weight: bold;
}
font.RegionMarker {
color: Plum;
}
font.SpecialChar {
color: Plum;
font-weight: bold;
}
font.SpecialString {
color: LightBlue;
}
font.String {
color: MediumAquaMarine;
}
font.Variable {
color: Turquoise;
font-weight: bold;
}
font.VerbatimString {
color: LightSkyBlue;
}
font.Warning {
color: Brown;
font-weight: bold;
}
</style>
<title>Kamelon output</title>
</head>
<body>
<div class="content">
<div id="1" class="line"><font class="Comment"># This file is a testcase for the highlighting of Ruby code</font></br></div>
<div id="2" class="line"><font class="Comment"># It's not executable code, but a collection of code snippets</font></br></div>
<div id="3" class="line"><font class="Comment">#</font></br></div>
<div id="4" class="line"></br></div>
<div id="5" class="line"><font class="Normal">require </font><font class="String">'Config'</font></br></div>
<div id="6" class="line"><font class="Normal">require </font><font class="String">'DO/Clients'</font></br></div>
<div id="7" class="line"><font class="Normal">require </font><font class="String">'DO/DBClients'</font></br></div>
<div id="8" class="line"></br></div>
<div id="9" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> </font><font class="DataType">CGI</font><font class="Normal">::escapeElement(string, *elements)</font></br></div>
<div id="10" class="line"><font class="Normal"> elements = elements[0] </font><font class="Keyword">if</font><font class="Normal"> elements[0].kind_of?(</font><font class="DataType">Array</font><font class="Normal">)</font></br></div>
<div id="11" class="line"><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> elements.empty?</font></br></div>
<div id="12" class="line"><font class="Normal"> string.gsub(</font><font class="Others">/<\/?(?:#{</font><font class="Normal">elements.join(</font><font class="String">"|"</font><font class="Normal">)</font><font class="Others">})(?!\w)(?:.|\n)*?>/ni</font><font class="Normal">) </font><font class="Keyword">do</font></br></div>
<div id="13" class="line"><font class="Normal"> </font><font class="DataType">CGI</font><font class="Normal">::escapeHTML(</font><font class="DataType">$&</font><font class="Normal">)</font></br></div>
<div id="14" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="15" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="16" class="line"><font class="Normal"> string</font></br></div>
<div id="17" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="18" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="19" class="line"></br></div>
<div id="20" class="line"><font class="Keyword">case</font><font class="Normal"> inputLine</font></br></div>
<div id="21" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="String">"debug"</font></br></div>
<div id="22" class="line"><font class="Normal"> dumpDebugInfo</font></br></div>
<div id="23" class="line"><font class="Normal"> dumpSymbols</font></br></div>
<div id="24" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="Others">/p\s+(\w+)/</font></br></div>
<div id="25" class="line"><font class="Normal"> dumpVariable(</font><font class="DataType">$1</font><font class="Normal">)</font></br></div>
<div id="26" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="String">"quit"</font><font class="Normal">, </font><font class="String">"exit"</font></br></div>
<div id="27" class="line"><font class="Normal"> exit</font></br></div>
<div id="28" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="29" class="line"><font class="Normal"> print </font><font class="String">"Illegal command: </font><font class="Others">#{</font><font class="Normal">inputLine</font><font class="Others">}</font><font class="String">"</font></br></div>
<div id="30" class="line"><font class="Keyword">end</font></br></div>
<div id="31" class="line"></br></div>
<div id="32" class="line"></br></div>
<div id="33" class="line"><font class="Normal">kind = </font><font class="Keyword">case</font><font class="Normal"> year </font><font class="Comment">#hi there</font></br></div>
<div id="34" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">1850</font><font class="Normal">..</font><font class="DecVal">1889</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="String">"Blues"</font></br></div>
<div id="35" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">1890</font><font class="Normal">..</font><font class="DecVal">1909</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="String">"Ragtime"</font></br></div>
<div id="36" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">1910</font><font class="Normal">..</font><font class="DecVal">1929</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="String">"New Orleans Jazz"</font></br></div>
<div id="37" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">1930</font><font class="Normal">..</font><font class="DecVal">1939</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="String">"Swing"</font></br></div>
<div id="38" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">1940</font><font class="Normal">..</font><font class="DecVal">1950</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="String">"Bebop"</font></br></div>
<div id="39" class="line"><font class="Normal"> </font><font class="Keyword">else</font><font class="Normal"> </font><font class="String">"Jazz"</font></br></div>
<div id="40" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="41" class="line"></br></div>
<div id="42" class="line"><font class="Normal"> </font><font class="Comment"># URL-encode a string.</font></br></div>
<div id="43" class="line"><font class="Normal"> </font><font class="Comment"># url_encoded_string = CGI::escape("'Stop!' said Fred")</font></br></div>
<div id="44" class="line"><font class="Normal"> </font><font class="Comment"># # => "%27Stop%21%27+said+Fred"</font></br></div>
<div id="45" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> </font><font class="DataType">CGI</font><font class="Normal">::escape(string)</font></br></div>
<div id="46" class="line"><font class="Normal"> string.gsub(</font><font class="Others">/([^ a-zA-Z0-9_.-]+)/n</font><font class="Normal">) </font><font class="Keyword">do</font></br></div>
<div id="47" class="line"><font class="Normal"> </font><font class="Char">'%'</font><font class="Normal"> + </font><font class="DataType">$1</font><font class="Normal">.unpack(</font><font class="String">'H2'</font><font class="Normal"> * </font><font class="DataType">$1</font><font class="Normal">.size).join(</font><font class="Char">'%'</font><font class="Normal">).upcase</font></br></div>
<div id="48" class="line"><font class="Normal"> </font><font class="Keyword">end</font><font class="Normal">.tr(</font><font class="Char">' '</font><font class="Normal">, </font><font class="Char">'+'</font><font class="Normal">)</font></br></div>
<div id="49" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="50" class="line"></br></div>
<div id="51" class="line"></br></div>
<div id="52" class="line"><font class="Comment"># Class ClientManager</font></br></div>
<div id="53" class="line"><font class="Comment">#</font></br></div>
<div id="54" class="line"><font class="Comment"># definition : Import, store and export the various data used by the application.</font></br></div>
<div id="55" class="line"><font class="Comment"># This class is the sole interface between the application and the underlying database.</font></br></div>
<div id="56" class="line"></br></div>
<div id="57" class="line"><font class="Normal">mon, day, year = </font><font class="DataType">$1</font><font class="Normal">, </font><font class="DataType">$2</font><font class="Normal">, </font><font class="DataType">$3</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> </font><font class="Others">/(\d\d)-(\d\d)-(\d\d)/</font></br></div>
<div id="58" class="line"><font class="Normal">puts </font><font class="String">"a = </font><font class="Others">#{</font><font class="Normal">a</font><font class="Others">}</font><font class="String">"</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> fDebug</font></br></div>
<div id="59" class="line"><font class="Normal">print total </font><font class="Keyword">unless</font><font class="Normal"> total == </font><font class="DecVal">0</font></br></div>
<div id="60" class="line"></br></div>
<div id="61" class="line"><font class="Keyword">while</font><font class="Normal"> gets</font></br></div>
<div id="62" class="line"><font class="Normal"> </font><font class="Keyword">next</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> </font><font class="Others">/^#/</font><font class="Normal"> </font><font class="Comment"># Skip comments</font></br></div>
<div id="63" class="line"><font class="Normal"> parseLine </font><font class="Keyword">unless</font><font class="Normal"> </font><font class="Others">/^$/</font><font class="Normal"> </font><font class="Comment"># Don't parse empty lines</font></br></div>
<div id="64" class="line"><font class="Keyword">end</font></br></div>
<div id="65" class="line"></br></div>
<div id="66" class="line"><font class="Keyword">if</font><font class="Normal"> artist == </font><font class="String">"John Coltrane"</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="67" class="line"><font class="Normal"> artist = </font><font class="String">"'Trane"</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="68" class="line"><font class="Keyword">end</font><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> nicknames == </font><font class="String">"no"</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="69" class="line"></br></div>
<div id="70" class="line"><font class="Normal">handle </font><font class="Keyword">= if</font><font class="Normal"> aSong.artist == </font><font class="String">"Gillespie"</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="71" class="line"><font class="Normal"> </font><font class="String">"Dizzy"</font></br></div>
<div id="72" class="line"><font class="Normal"> </font><font class="Keyword">elsif</font><font class="Normal"> aSong.artist == </font><font class="String">"Parker"</font><font class="Normal"> </font><font class="Keyword">then</font></br></div>
<div id="73" class="line"><font class="Normal"> </font><font class="String">"Bird"</font></br></div>
<div id="74" class="line"><font class="Normal"> </font><font class="Keyword">else</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="75" class="line"><font class="Normal"> </font><font class="String">"unknown"</font></br></div>
<div id="76" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="77" class="line"></br></div>
<div id="78" class="line"><font class="Keyword">if</font><font class="Normal"> aSong.artist == </font><font class="String">"Gillespie"</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> handle = </font><font class="String">"Dizzy"</font></br></div>
<div id="79" class="line"><font class="Keyword">elsif</font><font class="Normal"> aSong.artist == </font><font class="String">"Parker"</font><font class="Normal"> </font><font class="Keyword">then</font><font class="Normal"> handle = </font><font class="String">"Bird"</font></br></div>
<div id="80" class="line"><font class="Keyword">else</font><font class="Normal"> handle = </font><font class="String">"unknown"</font></br></div>
<div id="81" class="line"><font class="Keyword">end</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="82" class="line"></br></div>
<div id="83" class="line"><font class="Keyword">if</font><font class="Normal"> aSong.artist == </font><font class="String">"Gillespie"</font><font class="Normal"> </font><font class="Keyword">then</font></br></div>
<div id="84" class="line"><font class="Normal"> handle = </font><font class="String">"Dizzy"</font></br></div>
<div id="85" class="line"><font class="Keyword">elsif</font><font class="Normal"> aSong.artist == </font><font class="String">"Parker"</font><font class="Normal"> </font><font class="Keyword">then</font></br></div>
<div id="86" class="line"><font class="Normal"> handle = </font><font class="String">"Bird"</font></br></div>
<div id="87" class="line"><font class="Keyword">else</font></br></div>
<div id="88" class="line"><font class="Normal"> handle = </font><font class="String">"unknown"</font></br></div>
<div id="89" class="line"><font class="Keyword">end</font></br></div>
<div id="90" class="line"></br></div>
<div id="91" class="line"><font class="Keyword">if</font><font class="Normal"> aSong.artist == </font><font class="String">"Gillespie"</font></br></div>
<div id="92" class="line"><font class="Normal"> handle = </font><font class="String">"Dizzy"</font></br></div>
<div id="93" class="line"><font class="Keyword">elsif</font><font class="Normal"> aSong.artist == </font><font class="String">"Parker"</font></br></div>
<div id="94" class="line"><font class="Normal"> handle = </font><font class="String">"Bird"</font></br></div>
<div id="95" class="line"><font class="Keyword">else</font></br></div>
<div id="96" class="line"><font class="Normal"> handle = </font><font class="String">"unknown"</font></br></div>
<div id="97" class="line"><font class="Keyword">end</font></br></div>
<div id="98" class="line"></br></div>
<div id="99" class="line"><font class="Normal"> </font><font class="Keyword">case</font><font class="Normal"> line</font></br></div>
<div id="100" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="Others">/title=(.*)/</font></br></div>
<div id="101" class="line"><font class="Normal"> puts </font><font class="String">"Title is #$1"</font></br></div>
<div id="102" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="Others">/track=(.*)/</font></br></div>
<div id="103" class="line"><font class="Normal"> puts </font><font class="String">"Track is #$1"</font></br></div>
<div id="104" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="Others">/artist=(.*)/</font></br></div>
<div id="105" class="line"><font class="Normal"> puts </font><font class="String">"Artist is #$1"</font></br></div>
<div id="106" class="line"><font class="Keyword">end</font></br></div>
<div id="107" class="line"></br></div>
<div id="108" class="line"><font class="Keyword">case</font><font class="Normal"> shape</font></br></div>
<div id="109" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Square</font><font class="Normal">, </font><font class="DataType">Rectangle</font></br></div>
<div id="110" class="line"><font class="Normal"> </font><font class="Comment"># ...</font></br></div>
<div id="111" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Circle</font></br></div>
<div id="112" class="line"><font class="Normal"> </font><font class="Comment"># ...</font></br></div>
<div id="113" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Triangle</font></br></div>
<div id="114" class="line"><font class="Normal"> </font><font class="Comment"># ...</font></br></div>
<div id="115" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="116" class="line"><font class="Normal"> </font><font class="Comment"># ...</font></br></div>
<div id="117" class="line"><font class="Keyword">end</font><font class="Normal"> </font></br></div>
<div id="118" class="line"></br></div>
<div id="119" class="line"></br></div>
<div id="120" class="line"><font class="Keyword">until</font><font class="Normal"> playList.duration > </font><font class="DecVal">60</font><font class="Normal"> </font><font class="Comment">#hi there</font></br></div>
<div id="121" class="line"><font class="Normal"> playList.add(songList.pop)</font></br></div>
<div id="122" class="line"><font class="Keyword">end</font></br></div>
<div id="123" class="line"></br></div>
<div id="124" class="line"><font class="DecVal">3</font><font class="Normal">.times </font><font class="Keyword">do</font></br></div>
<div id="125" class="line"><font class="Normal"> print </font><font class="String">"Ho! "</font></br></div>
<div id="126" class="line"><font class="Keyword">end</font></br></div>
<div id="127" class="line"></br></div>
<div id="128" class="line"><font class="Normal">loop {</font></br></div>
<div id="129" class="line"><font class="Normal"> </font><font class="Comment"># block ...</font></br></div>
<div id="130" class="line"><font class="Normal">}</font></br></div>
<div id="131" class="line"></br></div>
<div id="132" class="line"><font class="Normal">songList.each </font><font class="Keyword">do</font><font class="Normal"> |aSong|</font></br></div>
<div id="133" class="line"><font class="Normal"> aSong.play</font></br></div>
<div id="134" class="line"><font class="Keyword">end</font></br></div>
<div id="135" class="line"></br></div>
<div id="136" class="line"><font class="Keyword">for</font><font class="Normal"> aSong </font><font class="Keyword">in</font><font class="Normal"> songList</font></br></div>
<div id="137" class="line"><font class="Normal"> aSong.play</font></br></div>
<div id="138" class="line"><font class="Keyword">end</font></br></div>
<div id="139" class="line"></br></div>
<div id="140" class="line"><font class="Keyword">for</font><font class="Normal"> i </font><font class="Keyword">in</font><font class="Normal"> [</font><font class="String">'fee'</font><font class="Normal">, </font><font class="String">'fi'</font><font class="Normal">, </font><font class="String">'fo'</font><font class="Normal">, </font><font class="String">'fum'</font><font class="Normal">]</font></br></div>
<div id="141" class="line"><font class="Normal"> print i, </font><font class="String">" "</font></br></div>
<div id="142" class="line"><font class="Keyword">end</font></br></div>
<div id="143" class="line"><font class="Keyword">for</font><font class="Normal"> i </font><font class="Keyword">in</font><font class="Normal"> </font><font class="DecVal">1</font><font class="Normal">..</font><font class="DecVal">3</font></br></div>
<div id="144" class="line"><font class="Normal"> print i, </font><font class="String">" "</font></br></div>
<div id="145" class="line"><font class="Keyword">end</font></br></div>
<div id="146" class="line"><font class="Keyword">for</font><font class="Normal"> i </font><font class="Keyword">in</font><font class="Normal"> </font><font class="DataType">File</font><font class="Normal">.open(</font><font class="String">"ordinal"</font><font class="Normal">).find_all { |l| l =~ </font><font class="Others">/d$/</font><font class="Normal">}</font></br></div>
<div id="147" class="line"><font class="Normal"> print i.chomp, </font><font class="String">" "</font></br></div>
<div id="148" class="line"><font class="Keyword">end</font></br></div>
<div id="149" class="line"></br></div>
<div id="150" class="line"><font class="Keyword">class</font><font class="Normal"> </font><font class="DataType">Periods</font></br></div>
<div id="151" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> each</font></br></div>
<div id="152" class="line"><font class="Normal"> </font><font class="Keyword">yield</font><font class="Normal"> </font><font class="String">"Classical"</font></br></div>
<div id="153" class="line"><font class="Normal"> </font><font class="Keyword">yield</font><font class="Normal"> </font><font class="String">"Jazz"</font></br></div>
<div id="154" class="line"><font class="Normal"> </font><font class="Keyword">yield</font><font class="Normal"> </font><font class="String">"Rock"</font></br></div>
<div id="155" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="156" class="line"><font class="Keyword">end</font></br></div>
<div id="157" class="line"></br></div>
<div id="158" class="line"></br></div>
<div id="159" class="line"><font class="Normal">periods = </font><font class="DataType">Periods</font><font class="Normal">.new</font></br></div>
<div id="160" class="line"><font class="Keyword">for</font><font class="Normal"> genre </font><font class="Keyword">in</font><font class="Normal"> periods</font></br></div>
<div id="161" class="line"><font class="Normal"> print genre, </font><font class="String">" "</font></br></div>
<div id="162" class="line"><font class="Keyword">end</font></br></div>
<div id="163" class="line"></br></div>
<div id="164" class="line"><font class="Keyword">while</font><font class="Normal"> gets</font></br></div>
<div id="165" class="line"><font class="Normal"> </font><font class="Keyword">next</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> </font><font class="Others">/^\s*#/</font><font class="Normal"> </font><font class="Comment"># skip comments</font></br></div>
<div id="166" class="line"><font class="Normal"> </font><font class="Keyword">break</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> </font><font class="Others">/^END/</font><font class="Normal"> </font><font class="Comment"># stop at end</font></br></div>
<div id="167" class="line"><font class="Normal"> </font><font class="Comment"># substitute stuff in backticks and try again</font></br></div>
<div id="168" class="line"><font class="Normal"> </font><font class="Keyword">redo</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> gsub!(</font><font class="Others">/`(.*?)`/</font><font class="Normal">) { eval(</font><font class="DataType">$1</font><font class="Normal">) }</font></br></div>
<div id="169" class="line"><font class="Normal"> </font><font class="Comment"># process line ...</font></br></div>
<div id="170" class="line"><font class="Keyword">end</font></br></div>
<div id="171" class="line"></br></div>
<div id="172" class="line"><font class="Normal">i=0</font></br></div>
<div id="173" class="line"><font class="Normal">loop </font><font class="Keyword">do</font></br></div>
<div id="174" class="line"><font class="Normal"> i += </font><font class="DecVal">1</font></br></div>
<div id="175" class="line"><font class="Normal"> </font><font class="Keyword">next</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> i < </font><font class="DecVal">3</font></br></div>
<div id="176" class="line"><font class="Normal"> print i</font></br></div>
<div id="177" class="line"><font class="Normal"> </font><font class="Keyword">break</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> i > </font><font class="DecVal">4</font></br></div>
<div id="178" class="line"><font class="Keyword">end</font></br></div>
<div id="179" class="line"></br></div>
<div id="180" class="line"><font class="Keyword">for</font><font class="Normal"> i </font><font class="Keyword">in</font><font class="Normal"> </font><font class="DecVal">1</font><font class="Normal">..</font><font class="DecVal">100</font></br></div>
<div id="181" class="line"><font class="Normal"> print </font><font class="String">"Now at </font><font class="Others">#{</font><font class="Normal">i</font><font class="Others">}</font><font class="String">. Restart? "</font></br></div>
<div id="182" class="line"><font class="Normal"> </font><font class="Keyword">retry</font><font class="Normal"> </font><font class="Keyword">if</font><font class="Normal"> gets =~ </font><font class="Others">/^y/i</font></br></div>
<div id="183" class="line"><font class="Keyword">end</font></br></div>
<div id="184" class="line"></br></div>
<div id="185" class="line"><font class="Keyword">def</font><font class="Normal"> doUntil(cond)</font></br></div>
<div id="186" class="line"><font class="Normal"> </font><font class="Keyword">yield</font></br></div>
<div id="187" class="line"><font class="Normal"> </font><font class="Keyword">retry</font><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> cond</font></br></div>
<div id="188" class="line"><font class="Keyword">end</font></br></div>
<div id="189" class="line"></br></div>
<div id="190" class="line"><font class="Normal">i = </font><font class="DecVal">0</font></br></div>
<div id="191" class="line"><font class="Normal">doUntil(i > </font><font class="DecVal">3</font><font class="Normal">) {</font></br></div>
<div id="192" class="line"><font class="Normal"> print i, </font><font class="String">" "</font></br></div>
<div id="193" class="line"><font class="Normal"> i += </font><font class="DecVal">1</font></br></div>
<div id="194" class="line"><font class="Normal">}</font></br></div>
<div id="195" class="line"></br></div>
<div id="196" class="line"><font class="Keyword">def</font><font class="Normal"> system_call</font></br></div>
<div id="197" class="line"><font class="Normal"> </font><font class="Comment"># ... code which throws SystemCallError</font></br></div>
<div id="198" class="line"><font class="Keyword">rescue</font><font class="Normal"> </font><font class="DataType">SystemCallError</font></br></div>
<div id="199" class="line"><font class="Normal"> </font><font class="DataType">$stderr</font><font class="Normal">.print </font><font class="String">"IO failed: "</font><font class="Normal"> + </font><font class="DataType">$!</font></br></div>
<div id="200" class="line"><font class="Normal"> opFile.close</font></br></div>
<div id="201" class="line"><font class="Normal"> </font><font class="DataType">File</font><font class="Normal">.delete(opName)</font></br></div>
<div id="202" class="line"><font class="Normal"> raise</font></br></div>
<div id="203" class="line"><font class="Keyword">end</font></br></div>
<div id="204" class="line"></br></div>
<div id="205" class="line"><font class="Keyword">class</font><font class="Normal"> </font><font class="DataType">ClientManager</font></br></div>
<div id="206" class="line"><font class="Normal"> </font></br></div>
<div id="207" class="line"><font class="Normal"> </font><font class="Comment"># constructor</font></br></div>
<div id="208" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> initialize(dbase)</font></br></div>
<div id="209" class="line"><font class="Normal"> </font><font class="Others">@dbClient</font><font class="Normal"> = </font><font class="DataType">DBClient</font><font class="Normal">.new(dbase)</font></br></div>
<div id="210" class="line"><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal"> = </font><font class="DataType">Clients</font><font class="Normal">.new</font></br></div>
<div id="211" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="212" class="line"><font class="Normal"> </font></br></div>
<div id="213" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> prout(a, b, xy=</font><font class="String">"jj"</font><font class="Normal">) </font><font class="DecVal">24</font><font class="Normal"> </font><font class="Keyword">end</font><font class="Normal"> </font></br></div>
<div id="214" class="line"><font class="Normal"> </font><font class="Comment">###############################################################</font></br></div>
<div id="215" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="216" class="line"><font class="Normal"> </font><font class="Comment"># CLIENTS SECTION</font></br></div>
<div id="217" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="218" class="line"><font class="Normal"> </font><font class="Comment">###############################################################</font></br></div>
<div id="219" class="line"><font class="Normal"> </font></br></div>
<div id="220" class="line"><font class="Normal"> </font><font class="Comment"># update the clients object by retrieving the related data from the database</font></br></div>
<div id="221" class="line"><font class="Normal"> </font><font class="Comment"># returns the number of clients</font></br></div>
<div id="222" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> refreshClients</font></br></div>
<div id="223" class="line"><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal">.clean</font></br></div>
<div id="224" class="line"><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.nil? </font><font class="Keyword">then</font></br></div>
<div id="225" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.selectClient.each </font><font class="Keyword">do</font><font class="Normal"> |row|</font></br></div>
<div id="226" class="line"><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal">.addClient(row[0],row[</font><font class="DecVal">1</font><font class="Normal">],row[</font><font class="DecVal">2</font><font class="Normal">],row[</font><font class="DecVal">3</font><font class="Normal">],row[</font><font class="DecVal">4</font><font class="Normal">],row[</font><font class="DecVal">5</font><font class="Normal">], row[</font><font class="DecVal">6</font><font class="Normal">], row[</font><font class="DecVal">7</font><font class="Normal">], row[</font><font class="DecVal">8</font><font class="Normal">])</font></br></div>
<div id="227" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="228" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="229" class="line"><font class="Normal"> puts </font><font class="String">"SqlQuery wasn't created : cannot read data from database"</font></br></div>
<div id="230" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="231" class="line"><font class="Normal"> </font><font class="Keyword">return</font><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal">.length</font></br></div>
<div id="232" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="233" class="line"><font class="Normal"> </font></br></div>
<div id="234" class="line"><font class="Normal"> </font><font class="Comment"># insert a client in the database and refreshes the local clients object</font></br></div>
<div id="235" class="line"><font class="Normal"> </font><font class="Comment"># we assume that none of the arguments is null</font></br></div>
<div id="236" class="line"><font class="Normal"> </font><font class="Comment"># we assume that the client, identified by raison_sociale doesn't already exists</font></br></div>
<div id="237" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> addClient(raison_sociale, division, departement, adresse, cp, ville, nom_contact, tel_contact)</font></br></div>
<div id="238" class="line"><font class="Normal"> id = </font><font class="String">"0"</font></br></div>
<div id="239" class="line"><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.nil? </font><font class="Keyword">then</font></br></div>
<div id="240" class="line"><font class="Normal"> id = </font><font class="Others">@sqlQuery</font><font class="Normal">.insertClient(raison_sociale, division, departement, adresse, cp, ville, nom_contact,tel_contact)</font></br></div>
<div id="241" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="242" class="line"><font class="Normal"> puts </font><font class="String">"SqlQuery wasn't created : database update cannot be performed"</font></br></div>
<div id="243" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="244" class="line"><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal">.addClient(id, raison_sociale, division, departement, adresse, cp, ville, nom_contact, tel_contact) </font><font class="Comment"># synchronize local object with DB</font></br></div>
<div id="245" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="246" class="line"><font class="Normal"> </font></br></div>
<div id="247" class="line"><font class="Normal"> </font><font class="Comment"># deletes a client from the database and updates the local Clients object accordingly</font></br></div>
<div id="248" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> delClient(nomclient_brut)</font></br></div>
<div id="249" class="line"><font class="Normal"> raison_sociale, div, dep = </font><font class="DataType">Clients</font><font class="Normal">.getIdentifiers(nomclient_brut)</font></br></div>
<div id="250" class="line"><font class="Normal"> listeContratsExp, listeContratsSup, listeContratsProd, listePropositionsExp, listePropositionsSup = []</font></br></div>
<div id="251" class="line"></br></div>
<div id="252" class="line"><font class="Normal"> listeContratsExp = </font><font class="Others">@contratsExpertise</font><font class="Normal">.getContratsFromClient(nomclient_brut)</font></br></div>
<div id="253" class="line"><font class="Normal"> listeContratsSup = </font><font class="Others">@contratsSupport</font><font class="Normal">.getContratsFromClient(nomclient_brut)</font></br></div>
<div id="254" class="line"><font class="Normal"> listeContratsProd = </font><font class="Others">@contratsProduits</font><font class="Normal">.getContratsFromClient(nomclient_brut)</font></br></div>
<div id="255" class="line"><font class="Normal"> listePropositionsExp = </font><font class="Others">@propositionsExpertise</font><font class="Normal">.getPropositionsFromClient(nomclient_brut)</font></br></div>
<div id="256" class="line"><font class="Normal"> listePropositionsSup = </font><font class="Others">@propositionsSupport</font><font class="Normal">.getPropositionsFromClient(nomclient_brut)</font></br></div>
<div id="257" class="line"><font class="Normal"> </font></br></div>
<div id="258" class="line"><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.nil? </font><font class="Keyword">then</font></br></div>
<div id="259" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deleteClient(raison_sociale, div, dep)</font></br></div>
<div id="260" class="line"><font class="Normal"> </font></br></div>
<div id="261" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deleteContracts(</font><font class="DataType">Config</font><font class="Normal">::</font><font class="DataType">EXPERTISE</font><font class="Normal">,listeContratsExp) </font></br></div>
<div id="262" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deleteContracts(</font><font class="DataType">Config</font><font class="Normal">::</font><font class="DataType">SUPPORT</font><font class="Normal">,listeContratsSup)</font></br></div>
<div id="263" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deleteContracts(</font><font class="DataType">Config</font><font class="Normal">::</font><font class="DataType">PRODUIT</font><font class="Normal">,listeContratsProd)</font></br></div>
<div id="264" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deletePropositions(</font><font class="DataType">Config</font><font class="Normal">::</font><font class="DataType">EXPERTISE</font><font class="Normal">,listePropositionsExp)</font></br></div>
<div id="265" class="line"><font class="Normal"> </font><font class="Others">@sqlQuery</font><font class="Normal">.deletePropositions(</font><font class="DataType">Config</font><font class="Normal">::</font><font class="DataType">SUPPORT</font><font class="Normal">,listePropositionsSup)</font></br></div>
<div id="266" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="267" class="line"><font class="Normal"> puts </font><font class="String">"SqlQuery wasn't created : database update cannot be performed"</font></br></div>
<div id="268" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="269" class="line"><font class="Normal"> </font><font class="Others">@clients</font><font class="Normal">.delClient(raison_sociale,div,dep)</font></br></div>
<div id="270" class="line"><font class="Normal"> </font></br></div>
<div id="271" class="line"><font class="Normal"> </font><font class="Others">@contratsExpertise</font><font class="Normal">.deleteContracts(listeContratsExp)</font></br></div>
<div id="272" class="line"><font class="Normal"> </font><font class="Others">@contratsSupport</font><font class="Normal">.deleteContracts(listeContratsSup)</font></br></div>
<div id="273" class="line"><font class="Normal"> </font><font class="Others">@contratsProduits</font><font class="Normal">.deleteContracts(listeContratsProd)</font></br></div>
<div id="274" class="line"><font class="Normal"> </font><font class="Others">@propositionsExpertise</font><font class="Normal">.deletePropositions(listePropositionsExp)</font></br></div>
<div id="275" class="line"><font class="Normal"> </font><font class="Others">@propositionsSupport</font><font class="Normal">.deletePropositions(listePropositionsSup)</font></br></div>
<div id="276" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="277" class="line"><font class="Keyword">end</font></br></div>
<div id="278" class="line"></br></div>
<div id="279" class="line"><font class="Normal"> </font><font class="Comment"># Mixin module for HTML version 3 generation methods.</font></br></div>
<div id="280" class="line"><font class="Normal"> </font><font class="Keyword">module</font><font class="Normal"> </font><font class="DataType">Html3</font><font class="Normal"> </font><font class="Comment"># :nodoc:</font></br></div>
<div id="281" class="line"></br></div>
<div id="282" class="line"><font class="Normal"> </font><font class="Comment"># The DOCTYPE declaration for this version of HTML</font></br></div>
<div id="283" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> doctype</font></br></div>
<div id="284" class="line"><font class="Others"> %|</font><font class="String"><!DOCTYPE</font><font class="Others"> </font><font class="DataType">HTML</font><font class="Normal"> </font><font class="DataType">PUBLIC</font><font class="Normal"> </font><font class="String">"-//W3C//DTD HTML 3.2 Final//EN"</font><font class="Normal">>|</font></br></div>
<div id="285" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="286" class="line"></br></div>
<div id="287" class="line"><font class="Normal"> </font><font class="Comment"># Initialise the HTML generation methods for this version.</font></br></div>
<div id="288" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> element_init</font></br></div>
<div id="289" class="line"><font class="Normal"> extend </font><font class="DataType">TagMaker</font></br></div>
<div id="290" class="line"><font class="Normal"> methods = </font><font class="String">""</font></br></div>
<div id="291" class="line"><font class="Normal"> </font><font class="Comment"># - -</font></br></div>
<div id="292" class="line"><font class="Normal"> </font><font class="Keyword">for</font><font class="Normal"> element </font><font class="Keyword">in</font><font class="Others"> %w[</font><font class="String"> A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG</font></br></div>
<div id="293" class="line"><font class="String"> DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP</font></br></div>
<div id="294" class="line"><font class="String"> APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE</font></br></div>
<div id="295" class="line"><font class="String"> STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE</font></br></div>
<div id="296" class="line"><font class="String"> CAPTION </font><font class="Others">]</font></br></div>
<div id="297" class="line"><font class="Normal"> methods += <<-</font><font class="Keyword">BEGIN</font><font class="Others"> + nn_element_def(element) + <<-END</font></br></div>
<div id="298" class="line"><font class="Others"> def #{</font><font class="Normal">element.downcase</font><font class="Others">}(attributes = {})</font></br></div>
<div id="299" class="line"><font class="Others"> </font><font class="Keyword">BEGIN</font></br></div>
<div id="300" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="301" class="line"><font class="Normal"> </font><font class="Keyword">END</font></br></div>
<div id="302" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="303" class="line"></br></div>
<div id="304" class="line"><font class="Normal"> </font><font class="Comment"># - O EMPTY</font></br></div>
<div id="305" class="line"><font class="Normal"> </font><font class="Keyword">for</font><font class="Normal"> element </font><font class="Keyword">in</font><font class="Others"> %w[</font><font class="String"> IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT</font></br></div>
<div id="306" class="line"><font class="String"> ISINDEX META </font><font class="Others">]</font></br></div>
<div id="307" class="line"><font class="Normal"> methods += <<-</font><font class="Keyword">BEGIN</font><font class="Others"> + nOE_element_def(element) + <<-END</font></br></div>
<div id="308" class="line"><font class="Others"> def #{</font><font class="Normal">element.downcase</font><font class="Others">}(attributes = {})</font></br></div>
<div id="309" class="line"><font class="Others"> </font><font class="Keyword">BEGIN</font></br></div>
<div id="310" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="311" class="line"><font class="Normal"> </font><font class="Keyword">END</font></br></div>
<div id="312" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="313" class="line"></br></div>
<div id="314" class="line"><font class="Normal"> </font><font class="Comment"># O O or - O</font></br></div>
<div id="315" class="line"><font class="Normal"> </font><font class="Keyword">for</font><font class="Normal"> element </font><font class="Keyword">in</font><font class="Others"> %w[</font><font class="String"> HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr</font></br></div>
<div id="316" class="line"><font class="String"> th td </font><font class="Others">]</font></br></div>
<div id="317" class="line"><font class="Normal"> methods += <<-</font><font class="Keyword">BEGIN</font><font class="Others"> + nO_element_def(element) + <<-END</font></br></div>
<div id="318" class="line"><font class="Others"> def #{</font><font class="Normal">element.downcase</font><font class="Others">}(attributes = {})</font></br></div>
<div id="319" class="line"><font class="Others"> </font><font class="Keyword">BEGIN</font></br></div>
<div id="320" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="321" class="line"><font class="Normal"> </font><font class="Keyword">END</font></br></div>
<div id="322" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="323" class="line"><font class="Normal"> eval(methods)</font></br></div>
<div id="324" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="325" class="line"></br></div>
<div id="326" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="327" class="line"></br></div>
<div id="328" class="line"><font class="Comment"># following snippet from Webrick's log.rb</font></br></div>
<div id="329" class="line"><font class="Comment"># notice the erronous handling of the query method is_a?</font></br></div>
<div id="330" class="line"><font class="Keyword">def</font><font class="Normal"> format(arg)</font></br></div>
<div id="331" class="line"><font class="Normal"> str </font><font class="Keyword">= if</font><font class="Normal"> arg.is_a?(</font><font class="DataType">Exception</font><font class="Normal">)</font></br></div>
<div id="332" class="line"><font class="Normal"> </font><font class="String">"</font><font class="Others">#{</font><font class="Normal">arg.class</font><font class="Others">}</font><font class="String">: </font><font class="Others">#{</font><font class="Normal">arg.message</font><font class="Others">}</font><font class="String">\n\t"</font><font class="Normal"> <<</font></br></div>
<div id="333" class="line"><font class="Normal"> arg.backtrace.join(</font><font class="String">"\n\t"</font><font class="Normal">) << </font><font class="String">"\n"</font></br></div>
<div id="334" class="line"><font class="Normal"> </font><font class="Keyword">elsif</font><font class="Normal"> arg.respond_to?(</font><font class="String">:to_str</font><font class="Normal">)</font></br></div>
<div id="335" class="line"><font class="Normal"> arg.to_str</font></br></div>
<div id="336" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="337" class="line"><font class="Normal"> arg.inspect</font></br></div>
<div id="338" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="339" class="line"><font class="Keyword">end</font></br></div>
<div id="340" class="line"></br></div>
<div id="341" class="line"><font class="Comment"># following snippet from Webrick's httputils.rb</font></br></div>
<div id="342" class="line"><font class="Comment"># Splitting regexps on several lines might be bad form,</font></br></div>
<div id="343" class="line"><font class="Comment"># but not illegal in Ruby. </font></br></div>
<div id="344" class="line"><font class="Comment"># This should probably be supported in the highlighting</font></br></div>
<div id="345" class="line"><font class="Keyword">def</font><font class="Normal"> split_header_value(str)</font></br></div>
<div id="346" class="line"><font class="Normal"> str.scan(</font><font class="Others">/((?:"(?:\\.|[^"])+?"|[^",]+)+)</font></br></div>
<div id="347" class="line"><font class="Others"> (?:,\s*|\Z)/xn</font><font class="Normal">).collect{|v| v[0] }</font></br></div>
<div id="348" class="line"><font class="Keyword">end</font></br></div>
<div id="349" class="line"></br></div>
<div id="350" class="line"><font class="Comment"># snippet from Net::Telnet</font></br></div>
<div id="351" class="line"><font class="Normal">string.gsub(</font><font class="Others">/#{</font><font class="DataType">IAC</font><font class="Others">}(</font></br></div>
<div id="352" class="line"><font class="Others"> [#{</font><font class="DataType">IAC</font><font class="Others">}#{</font><font class="DataType">AO</font><font class="Others">}#{</font><font class="DataType">AYT</font><font class="Others">}#{</font><font class="DataType">DM</font><font class="Others">}#{</font><font class="DataType">IP</font><font class="Others">}#{</font><font class="DataType">NOP</font><font class="Others">}]|</font></br></div>
<div id="353" class="line"><font class="Others"> [#{</font><font class="DataType">DO</font><font class="Others">}#{</font><font class="DataType">DONT</font><font class="Others">}#{</font><font class="DataType">WILL</font><font class="Others">}#{</font><font class="DataType">WONT</font><font class="Others">}]</font></br></div>
<div id="354" class="line"><font class="Others"> [#{</font><font class="DataType">OPT_BINARY</font><font class="Others">}-#{</font><font class="DataType">OPT_NEW_ENVIRON</font><font class="Others">}#{</font><font class="DataType">OPT_EXOPL</font><font class="Others">}]|</font></br></div>
<div id="355" class="line"><font class="Others"> #{</font><font class="DataType">SB</font><font class="Others">}[^#{</font><font class="DataType">IAC</font><font class="Others">}]*#{</font><font class="DataType">IAC</font><font class="Others">}#{</font><font class="DataType">SE</font><font class="Others">}</font></br></div>
<div id="356" class="line"><font class="Others"> )/xno</font><font class="Normal">)</font></br></div>
<div id="357" class="line"></br></div>
<div id="358" class="line"><font class="Comment"># following snippet from Webrick's httpresponse.rb</font></br></div>
<div id="359" class="line"><font class="Comment"># the HEREDOC is not recognized as such</font></br></div>
<div id="360" class="line"><font class="Others">@body</font><font class="Normal"> << <<-</font><font class="Keyword">_end_of_html_</font></br></div>
<div id="361" class="line"><font class="Others"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"></font></br></div>
<div id="362" class="line"><font class="Others"><HTML></font></br></div>
<div id="363" class="line"><font class="Others"> <HEAD><TITLE>#{</font><font class="DataType">HTMLUtils</font><font class="Normal">::escape(</font><font class="Others">@reason_phrase</font><font class="Normal">)</font><font class="Others">}</TITLE></HEAD></font></br></div>
<div id="364" class="line"><font class="Others"> <BODY></font></br></div>
<div id="365" class="line"><font class="Others"> <H1>#{</font><font class="DataType">HTMLUtils</font><font class="Normal">::escape(</font><font class="Others">@reason_phrase</font><font class="Normal">)</font><font class="Others">}</H1></font></br></div>
<div id="366" class="line"><font class="Others"> #{</font><font class="DataType">HTMLUtils</font><font class="Normal">::escape(ex.message)</font><font class="Others">}</font></br></div>
<div id="367" class="line"><font class="Others"> <HR></font></br></div>
<div id="368" class="line"><font class="Keyword">_end_of_html_</font></br></div>
<div id="369" class="line"></br></div>
<div id="370" class="line"></br></div>
<div id="371" class="line"><font class="Comment"># snippet from Webrick's httpproxy.rb</font></br></div>
<div id="372" class="line"><font class="Comment"># here we should make sure that the symbol definition ':' doesn't override</font></br></div>
<div id="373" class="line"><font class="Comment"># the module operator '::'</font></br></div>
<div id="374" class="line"><font class="DataType">Net</font><font class="Normal">::</font><font class="DataType">HTTP</font><font class="Normal">::version_1_2 </font><font class="Keyword">if</font><font class="Normal"> </font><font class="DataType">RUBY_VERSION</font><font class="Normal"> < </font><font class="String">"1.7"</font></br></div>
<div id="375" class="line"></br></div>
<div id="376" class="line"><font class="Comment"># snippet from Webrick's cookie.rb</font></br></div>
<div id="377" class="line"><font class="Comment"># the beginning of the regexp is erronously highlighted like an operator</font></br></div>
<div id="378" class="line"><font class="Normal">key, val = x.split(</font><font class="Others">/=/</font><font class="Normal">,</font><font class="DecVal">2</font><font class="Normal">)</font></br></div>
<div id="379" class="line"></br></div>
<div id="380" class="line"><font class="Comment"># the following are division operators</font></br></div>
<div id="381" class="line"><font class="Comment"># it's a bit tricky to keep the operator apart from the regexp</font></br></div>
<div id="382" class="line"><font class="Comment"># we currently require a space after the operator, but that is not quite right either</font></br></div>
<div id="383" class="line"><font class="Normal">result = </font><font class="DecVal">8</font><font class="Normal"> / </font><font class="DecVal">4</font></br></div>
<div id="384" class="line"><font class="Normal">result /= divisor</font></br></div>
<div id="385" class="line"></br></div>
<div id="386" class="line"><font class="Comment"># test cases for general delimited input</font></br></div>
<div id="387" class="line"><font class="Comment"># quoted strings</font></br></div>
<div id="388" class="line"><font class="Others">%Q|</font><font class="String">this</font><font class="Others"> </font><font class="Normal">is a string|</font></br></div>
<div id="389" class="line"><font class="Others">%Q{</font><font class="String">this is a string</font><font class="Others">}</font></br></div>
<div id="390" class="line"><font class="Others">%Q(</font><font class="String">this is a string</font><font class="Others">)</font></br></div>
<div id="391" class="line"><font class="Others">%Q<</font><font class="String">this is a string</font><font class="Others">></font></br></div>
<div id="392" class="line"><font class="Others">%Q[</font><font class="String">this is a string</font><font class="Others">]</font></br></div>
<div id="393" class="line"></br></div>
<div id="394" class="line"><font class="Others">%|</font><font class="String">also</font><font class="Others"> </font><font class="Normal">a string|</font></br></div>
<div id="395" class="line"><font class="Others">%{</font><font class="String">also a string</font><font class="Others">}</font></br></div>
<div id="396" class="line"><font class="Others">%(</font><font class="String">also a string</font><font class="Others">)</font></br></div>
<div id="397" class="line"><font class="Others">%<</font><font class="String">also a string</font><font class="Others">></font></br></div>
<div id="398" class="line"><font class="Others">%[</font><font class="String">also a string</font><font class="Others">]</font></br></div>
<div id="399" class="line"></br></div>
<div id="400" class="line"><font class="Comment"># apostrophed strings</font></br></div>
<div id="401" class="line"><font class="Others">%q|</font><font class="String">apostrophed|</font></br></div>
<div id="402" class="line"><font class="String">%q{apostrophed}</font></br></div>
<div id="403" class="line"><font class="String">%q(apostrophed)</font></br></div>
<div id="404" class="line"><font class="String">%q<apostrophed></font></br></div>
<div id="405" class="line"><font class="String">%q[apostrophed]</font></br></div>
<div id="406" class="line"></br></div>
<div id="407" class="line"><font class="String">#</font><font class="Others"> </font><font class="Normal">regular expressions</font></br></div>
<div id="408" class="line"><font class="Others">%r{expression}</font></br></div>
<div id="409" class="line"><font class="Others">%r(expression)</font></br></div>
<div id="410" class="line"><font class="Others">%r<expression></font></br></div>
<div id="411" class="line"><font class="Others">%r[expression]</font></br></div>
<div id="412" class="line"><font class="Others">%r|expression|</font></br></div>
<div id="413" class="line"></br></div>
<div id="414" class="line"><font class="Others"># </font><font class="Normal">shell commands</font></br></div>
<div id="415" class="line"><font class="Others">%x{</font><font class="String">ls -l</font><font class="Others">}</font></br></div>
<div id="416" class="line"><font class="Others">%x(</font><font class="String">ls -l</font><font class="Others">)</font></br></div>
<div id="417" class="line"><font class="Others">%x<</font><font class="String">ls -l</font><font class="Others">></font></br></div>
<div id="418" class="line"><font class="Others">%x[</font><font class="String">ls -l</font><font class="Others">]</font></br></div>
<div id="419" class="line"></br></div>
<div id="420" class="line"><font class="Comment"># sometimes it's useful to have the command on multiple lines</font></br></div>
<div id="421" class="line"><font class="Others">%x{</font><font class="String">ls -l |</font></br></div>
<div id="422" class="line"><font class="String">grep test </font><font class="Others">}</font></br></div>
<div id="423" class="line"></br></div>
<div id="424" class="line"><font class="Comment"># token array</font></br></div>
<div id="425" class="line"><font class="Others">%w{</font><font class="String">one two three</font><font class="Others">}</font></br></div>
<div id="426" class="line"><font class="Others">%w(</font><font class="String">one two three</font><font class="Others">)</font></br></div>
<div id="427" class="line"><font class="Others">%w<</font><font class="String">one two three</font><font class="Others">></font></br></div>
<div id="428" class="line"><font class="Others">%w[</font><font class="String">one two three</font><font class="Others">]</font></br></div>
<div id="429" class="line"></br></div>
<div id="430" class="line"><font class="Comment"># snippet from Net::IMAP</font></br></div>
<div id="431" class="line"><font class="Comment"># I object to putting String, Integer and Array into kernel methods.</font></br></div>
<div id="432" class="line"><font class="Comment"># While these classes are builtin in Ruby, this is an implementation detail</font></br></div>
<div id="433" class="line"><font class="Comment"># that should not be exposed to the user.</font></br></div>
<div id="434" class="line"><font class="Comment"># If we want to handle all std-lib classes, fine. But then they should be in their</font></br></div>
<div id="435" class="line"><font class="Comment"># own std-lib keyword category.</font></br></div>
<div id="436" class="line"></br></div>
<div id="437" class="line"><font class="Keyword">def</font><font class="Normal"> send_data(data)</font></br></div>
<div id="438" class="line"><font class="Normal"> </font><font class="Keyword">case</font><font class="Normal"> data</font></br></div>
<div id="439" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DecVal">nil</font></br></div>
<div id="440" class="line"><font class="Normal"> put_string(</font><font class="String">"NIL"</font><font class="Normal">)</font></br></div>
<div id="441" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">String</font></br></div>
<div id="442" class="line"><font class="Normal"> send_string_data(data)</font></br></div>
<div id="443" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Integer</font></br></div>
<div id="444" class="line"><font class="Normal"> send_number_data(data)</font></br></div>
<div id="445" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Array</font></br></div>
<div id="446" class="line"><font class="Normal"> send_list_data(data)</font></br></div>
<div id="447" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Time</font></br></div>
<div id="448" class="line"><font class="Normal"> send_time_data(data)</font></br></div>
<div id="449" class="line"><font class="Normal"> </font><font class="Keyword">when</font><font class="Normal"> </font><font class="DataType">Symbol</font></br></div>
<div id="450" class="line"><font class="Normal"> send_symbol_data(data)</font></br></div>
<div id="451" class="line"><font class="Normal"> </font><font class="Keyword">else</font></br></div>
<div id="452" class="line"><font class="Normal"> data.send_data(</font><font class="DecVal">self</font><font class="Normal">)</font></br></div>
<div id="453" class="line"><font class="Normal"> </font><font class="Keyword">end</font></br></div>
<div id="454" class="line"><font class="Keyword">end</font></br></div>
<div id="455" class="line"></br></div>
<div id="456" class="line"><font class="Comment"># snippet from Net::POP</font></br></div>
<div id="457" class="line"><font class="Comment"># class names can have numbers in them as long as they don't begin with numbers</font></br></div>
<div id="458" class="line"><font class="Comment"># Ruby doesn't internally really make much of a difference between a class name and a constant</font></br></div>
<div id="459" class="line"></br></div>
<div id="460" class="line"><font class="Comment"># class aliases</font></br></div>
<div id="461" class="line"><font class="Normal"> </font><font class="DataType">POP</font><font class="Normal"> = </font><font class="DataType">POP3</font></br></div>
<div id="462" class="line"><font class="Normal"> </font><font class="DataType">POPSession</font><font class="Normal"> = </font><font class="DataType">POP3</font></br></div>
<div id="463" class="line"><font class="Normal"> </font><font class="DataType">POP3Session</font><font class="Normal"> = </font><font class="DataType">POP3</font></br></div>
<div id="464" class="line"></br></div>
<div id="465" class="line"><font class="Comment"># "member access"</font></br></div>
<div id="466" class="line"><font class="DataType">POP</font><font class="Normal">::</font><font class="DataType">Session</font><font class="Normal">.</font><font class="DataType">COUNT</font><font class="Normal">.attribute.calc_with(</font><font class="DecVal">2</font><font class="Normal">){ |arg| puts arg }</font></br></div>
<div id="467" class="line"></br></div>
<div id="468" class="line"><font class="Comment"># snippet from Net::SMTP</font></br></div>
<div id="469" class="line"><font class="Comment"># This breaks the code folding. I think we would need to</font></br></div>
<div id="470" class="line"><font class="Comment"># handle the '\' that continues the statement to the next line</font></br></div>
<div id="471" class="line"><font class="Comment"># in some way to make these kind of things not break something.</font></br></div>
<div id="472" class="line"><font class="Normal">raise </font><font class="DataType">ArgumentError</font><font class="Normal">, </font><font class="String">'both user and secret are required'</font><font class="Normal">\</font></br></div>
<div id="473" class="line"><font class="Normal"> </font><font class="Keyword">unless</font><font class="Normal"> user </font><font class="Keyword">and</font><font class="Normal"> secret</font></br></div>
<div id="474" class="line"><font class="Normal"> </font></br></div>
<div id="475" class="line"><font class="Comment"># string escapes must detect escaping the escape char</font></br></div>
<div id="476" class="line"><font class="Normal">str = </font><font class="String">"\\"</font></br></div>
<div id="477" class="line"><font class="Normal">str = </font><font class="String">"\\\\"</font></br></div>
<div id="478" class="line"><font class="Comment"># this is not part of the string</font></br></div>
<div id="479" class="line"><font class="Others">%x{</font><font class="String">echo \\\}\\</font><font class="Others">}</font><font class="Normal"> </font><font class="Comment"># prints \}\</font></br></div>
<div id="480" class="line"><font class="Comment"># this is not part of the command</font></br></div>
</div>
</body>
</html>