<?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> <head> <title>Module: Instantiable</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" /> <script language="JavaScript" type="text/javascript"> // <![CDATA[ function toggleSource( id ) { var elem var link if( document.getElementById ) { elem = document.getElementById( id ) link = document.getElementById( "l_" + id ) } else if ( document.all ) { elem = eval( "document.all." + id ) link = eval( "document.all.l_" + id ) } else return false; if( elem.style.display == "block" ) { elem.style.display = "none" link.innerHTML = "+" } else { elem.style.display = "block" link.innerHTML = "-" } } function openCode( url ) { window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus(); } // ]]> </script> </head> <body> <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr> <td class="file-title"><span class="file-title-prefix">Module</span><br />Instantiable</td> <td align="right"> <table cellspacing="0" cellpadding="2"> <tr valign="top"> <td>In:</td> <td> <a href="../files/lib/more/facets/instantiable_rb.html">lib/more/facets/instantiable.rb</a> </td> </tr> </table> </td> </tr> </table> <!-- banner header --> <div id="bodyContent"> <div id="content"> <div class="description"><h1><a href="Instantiable.html">Instantiable</a></h1> <p> Initialize modules, almost as if they were classes. </p> <p> Alows a module to be used much like a class, by defining a <a href="Instantiable.html#M000954">new</a> method that creates a class on demand. </p> </div> <div class="sectiontitle">Methods</div> <span style="padding-right: 5px;"><a href="#M000953">append_features</a></span> <span style="padding-right: 5px;"><a href="#M000954">new</a></span> <div class="sectiontitle">Public Class methods</div> <div class="method"> <div class="title"> <a name="M000953"></a><b>append_features</b>(mod) </div> <div class="sourcecode"> <p class="source-link">[ <a href="javascript:toggleSource('M000953_source')" id="l_M000953_source">+</a> ]</p> <div id="M000953_source" class="dyn-source"> <pre> <span class="ruby-comment cmt"># File lib/more/facets/instantiable.rb, line 32</span> <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">append_features</span>(<span class="ruby-identifier">mod</span>) <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">extend</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> <div class="sectiontitle">Public Instance methods</div> <div class="method"> <div class="title"> <a name="M000954"></a><b>new</b>(*args,&blk) </div> <div class="description"> <p> Never use a class agian! ;) </p> </div> <div class="sourcecode"> <p class="source-link">[ <a href="javascript:toggleSource('M000954_source')" id="l_M000954_source">+</a> ]</p> <div id="M000954_source" class="dyn-source"> <pre> <span class="ruby-comment cmt"># File lib/more/facets/instantiable.rb, line 38</span> <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&</span><span class="ruby-identifier">blk</span>) <span class="ruby-identifier">mod</span> = <span class="ruby-keyword kw">self</span> <span class="ruby-ivar">@instantiable_class</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Class</span>.<span class="ruby-identifier">new</span>{<span class="ruby-identifier">include</span> <span class="ruby-identifier">mod</span>} <span class="ruby-ivar">@instantiable_class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>,<span class="ruby-operator">&</span><span class="ruby-identifier">blk</span>) <span class="ruby-keyword kw">end</span> </pre> </div> </div> </div> </div> </div> </body> </html>