<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Class: World</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" /> <script type="text/javascript"> // <![CDATA[ function popupCode( url ) { window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400") } function toggleCode( id ) { if ( document.getElementById ) elem = document.getElementById( id ); else if ( document.all ) elem = eval( "document.all." + id ); else return false; elemStyle = elem.style; if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else { elemStyle.display = "none" } return true; } // Make codeblocks hidden by default document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" ) // ]]> </script> </head> <body> <div id="classHeader"> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>Class</strong></td> <td class="class-name-in-header">World</td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> <a href="../files/lib/core/world_rb.html"> lib/core/world.rb </a> <br /> </td> </tr> <tr class="top-aligned-row"> <td><strong>Parent:</strong></td> <td> <a href="Root.html"> Root </a> </td> </tr> </table> </div> <!-- banner header --> <div id="bodyContent"> <div id="contextContent"> <div id="diagram"> <map id="map" name="map"> <area shape="rect" coords="5,101,77,149" href="World.html" alt="World " /> <area shape="rect" coords="5,5,77,53" href="Root.html" alt="Root " /> </map> <img src="../dot/f_16.png" usemap="#map" border="0" alt="dot/f_16.png"> </div> <div id="description"> <p> The <a href="World.html">World</a> class is the mother of all worlds. </p> <p> It contains world state information, the world timer, utility functions, and delegates to the <a href="Engine.html">Engine</a>. </p> <dl> <dt><tt>cmds</tt></dt><dd>is a handle to the character commands table. </dd> <dt><tt>ocmds</tt></dt><dd>is a handle to the object commands table. </dd> <dt><tt>timer_list</tt></dt><dd>is a list of all installed timer objects (persistent) </dd> <dt><tt>all_characters</tt></dt><dd>is a list of all characters (persistent) </dd> <dt><tt>timer_list</tt></dt><dd>is a list of all connected characters </dd> </dl> </div> </div> <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> <a href="#M000295">add_admin</a> <a href="#M000297">add_builder</a> <a href="#M000294">is_admin?</a> <a href="#M000293">is_builder?</a> <a href="#M000299">is_owner?</a> <a href="#M000300">memstats</a> <a href="#M000288">new</a> <a href="#M000296">rem_admin</a> <a href="#M000298">rem_builder</a> <a href="#M000291">set_timer</a> <a href="#M000290">shutdown</a> <a href="#M000289">startup</a> <a href="#M000292">unset_timer</a> </div> </div> </div> <!-- if includes --> <div id="section"> <div id="attribute-list"> <h3 class="section-bar">Attributes</h3> <div class="name-list"> <table> <tr class="top-aligned-row context-row"> <td class="context-item-name">cmds</td> <td class="context-item-value"> [RW] </td> <td class="context-item-desc"></td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">connected_characters</td> <td class="context-item-value"> [RW] </td> <td class="context-item-desc"></td> </tr> <tr class="top-aligned-row context-row"> <td class="context-item-name">ocmds</td> <td class="context-item-value"> [RW] </td> <td class="context-item-desc"></td> </tr> </table> </div> </div> <!-- if method_list --> <div id="methods"> <h3 class="section-bar">Public Class methods</h3> <div id="method-M000288" class="method-detail"> <a name="M000288"></a> <div class="method-heading"> <a href="#M000288" class="method-signature"> <span class="method-name">new</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Create the <a href="World.html">World</a>. This loads or creates the database depending on whether it finds it. </p> <dl> <dt><tt>return</tt></dt><dd>A handle to the <a href="World.html">World</a> object. </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000288-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000288-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 41</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">timer_list</span> = [] <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">all_characters</span> = [] <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">all_accounts</span> = [] <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">admins</span> = [] <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">builders</span> = [] <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">msgs</span> = {} <span class="ruby-ivar">@connected_characters</span> = [] <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <h3 class="section-bar">Public Instance methods</h3> <div id="method-M000295" class="method-detail"> <a name="M000295"></a> <div class="method-heading"> <a href="#M000295" class="method-signature"> <span class="method-name">add_admin</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Make the character an admin </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>undefined </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000295-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000295-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 122</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_admin</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">admins</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Character</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">admin?</span>(<span class="ruby-identifier">oid</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000297" class="method-detail"> <a name="M000297"></a> <div class="method-heading"> <a href="#M000297" class="method-signature"> <span class="method-name">add_builder</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Make the character a builder </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>undefined </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000297-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000297-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 136</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_builder</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">builders</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Character</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">builder?</span>(<span class="ruby-identifier">oid</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000294" class="method-detail"> <a name="M000294"></a> <div class="method-heading"> <a href="#M000294" class="method-signature"> <span class="method-name">is_admin?</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Is character an admin? </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>true or false </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000294-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000294-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 115</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">is_admin?</span> <span class="ruby-identifier">oid</span> <span class="ruby-identifier">admins</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000293" class="method-detail"> <a name="M000293"></a> <div class="method-heading"> <a href="#M000293" class="method-signature"> <span class="method-name">is_builder?</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Is character a builder? </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>true or false </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000293-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000293-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 108</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">is_builder?</span> <span class="ruby-identifier">oid</span> <span class="ruby-identifier">builders</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000299" class="method-detail"> <a name="M000299"></a> <div class="method-heading"> <a href="#M000299" class="method-signature"> <span class="method-name">is_owner?</span><span class="method-args">(pid, oid)</span> </a> </div> <div class="method-description"> <p> Does character own the object? </p> <dl> <dt><tt>pid</tt></dt><dd>character object id </dd> <dt><tt>oid</tt></dt><dd>object id </dd> <dt><tt>return</tt></dt><dd>true or false </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000299-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000299-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 151</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">is_owner?</span>(<span class="ruby-identifier">pid</span>, <span class="ruby-identifier">oid</span>) <span class="ruby-identifier">oid</span>.<span class="ruby-identifier">owner</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">get_object</span>(<span class="ruby-identifier">pid</span>).<span class="ruby-identifier">owner</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000300" class="method-detail"> <a name="M000300"></a> <div class="method-heading"> <a href="#M000300" class="method-signature"> <span class="method-name">memstats</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> <a href="World.html#M000300">memstats</a> scans all objects in memory and produces a report </p> <dl> <dt><tt>return</tt></dt><dd>a string </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000300-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000300-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 157</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">memstats</span> <span class="ruby-comment cmt"># initialize all counters</span> <span class="ruby-identifier">rooms</span> = <span class="ruby-identifier">objs</span> = <span class="ruby-identifier">chars</span> = <span class="ruby-identifier">accounts</span> = <span class="ruby-identifier">scripts</span> = <span class="ruby-identifier">strcount</span> = <span class="ruby-identifier">strsize</span> = <span class="ruby-identifier">ocount</span> = <span class="ruby-value">0</span> <span class="ruby-comment cmt"># scan the ObjectSpace counting things</span> <span class="ruby-constant">ObjectSpace</span>.<span class="ruby-identifier">each_object</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">x</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">String</span> <span class="ruby-identifier">strcount</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-identifier">strsize</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">size</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Character</span> <span class="ruby-identifier">chars</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Account</span> <span class="ruby-identifier">accounts</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Room</span> <span class="ruby-identifier">rooms</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">GameObject</span> <span class="ruby-identifier">objs</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Script</span> <span class="ruby-identifier">scripts</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">ocount</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># our report :</span> <span class="ruby-comment cmt"># :NOTE: sprintf would be better</span> <span class="ruby-identifier">memstats</span>=<span class="ruby-value str">"[COLOR Cyan]\n----* Memory Statistics *----\n Rooms - \#{rooms}\n Objects - \#{objs}\n Scripts - \#{scripts}\n Accounts - \#{accounts}\n Characters - \#{chars}\n-----------------------------\n Strings - \#{strcount}\n size - \#{strsize} bytes\n Other - \#{ocount}\n-----------------------------\n Total Objects - \#{rooms+objs+chars+accounts+scripts+strcount+ocount}\n----* *----\n[/COLOR]\n"</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000296" class="method-detail"> <a name="M000296"></a> <div class="method-heading"> <a href="#M000296" class="method-signature"> <span class="method-name">rem_admin</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Remove admin priviledges from character </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>undefined </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000296-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000296-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 129</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rem_admin</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">admins</span>.<span class="ruby-identifier">delete</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000298" class="method-detail"> <a name="M000298"></a> <div class="method-heading"> <a href="#M000298" class="method-signature"> <span class="method-name">rem_builder</span><span class="method-args">(oid)</span> </a> </div> <div class="method-description"> <p> Remove admin priviledges from character </p> <dl> <dt><tt>oid</tt></dt><dd>character object id </dd> <dt><tt>return</tt></dt><dd>undefined </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000298-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000298-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 143</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rem_builder</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">builders</span>.<span class="ruby-identifier">delete</span> <span class="ruby-identifier">oid</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000291" class="method-detail"> <a name="M000291"></a> <div class="method-heading"> <a href="#M000291" class="method-signature"> <span class="method-name">set_timer</span><span class="method-args">(id, name, time)</span> </a> </div> <div class="method-description"> <p> Set/add a timer for an object </p> <dl> <dt><tt>id</tt></dt><dd>The id of the object that wants to get a timer event </dd> <dt><tt>name</tt></dt><dd>The symbolic name of the timer event </dd> <dt><tt>time</tt></dt><dd>The interval time in seconds of the timer event </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000291-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000291-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 86</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_timer</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">time</span>) <span class="ruby-ivar">@timer_list_mutex</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span> <span class="ruby-identifier">timer_list</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Timer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">time</span>) <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000290" class="method-detail"> <a name="M000290"></a> <div class="method-heading"> <a href="#M000290" class="method-signature"> <span class="method-name">shutdown</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000290-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000290-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 77</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">shutdown</span> <span class="ruby-identifier">connected_characters</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">pid</span><span class="ruby-operator">|</span> <span class="ruby-identifier">get_object</span>(<span class="ruby-identifier">pid</span>).<span class="ruby-identifier">account</span>.<span class="ruby-identifier">disconnect</span>(<span class="ruby-value str">"Shutdown."</span>)} <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-ivar">@timer</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000289" class="method-detail"> <a name="M000289"></a> <div class="method-heading"> <a href="#M000289" class="method-signature"> <span class="method-name">startup</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p><a class="source-toggle" href="#" onclick="toggleCode('M000289-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000289-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 51</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startup</span> <span class="ruby-ivar">@connected_characters</span> = [] <span class="ruby-ivar">@cmds</span>, <span class="ruby-ivar">@ocmds</span> = <span class="ruby-constant">Command</span>.<span class="ruby-identifier">load</span> <span class="ruby-identifier">log</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">"Starting Timer..."</span> <span class="ruby-ivar">@timer_list_mutex</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span> <span class="ruby-ivar">@timer</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-keyword kw">begin</span> <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span> <span class="ruby-identifier">sleep</span> <span class="ruby-value">1.0</span> <span class="ruby-ivar">@timer_list_mutex</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span> <span class="ruby-identifier">timer_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ti</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">fire?</span> <span class="ruby-identifier">add_event</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">:timer</span>, <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">name</span>) <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">reset</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-identifier">log</span>.<span class="ruby-identifier">fatal</span> <span class="ruby-value str">"Timer thread blew up"</span> <span class="ruby-identifier">log</span>.<span class="ruby-identifier">fatal</span> <span class="ruby-identifier">$!</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-identifier">log</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">"World initialized."</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div id="method-M000292" class="method-detail"> <a name="M000292"></a> <div class="method-heading"> <a href="#M000292" class="method-signature"> <span class="method-name">unset_timer</span><span class="method-args">(id, name=nil)</span> </a> </div> <div class="method-description"> <p> Unset/remove a timer for an object </p> <dl> <dt><tt>id</tt></dt><dd>The id of the object to remove a timer event </dd> <dt><tt>name</tt></dt><dd>The symbolic name of the timer event to remove (or nil for all events) </dd> </dl> <p><a class="source-toggle" href="#" onclick="toggleCode('M000292-source');return false;">[Source]</a></p> <div class="method-source-code" id="M000292-source"> <pre> <span class="ruby-comment cmt"># File lib/core/world.rb, line 95</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unset_timer</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>=<span class="ruby-keyword kw">nil</span>) <span class="ruby-ivar">@timer_list_mutex</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-identifier">timer_list</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">ti</span><span class="ruby-operator">|</span> <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">id</span> } <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">timer_list</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">ti</span><span class="ruby-operator">|</span> <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">ti</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span> } <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> </div> </div> <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> </div> </body> </html>