HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Ruby27-x64/share/doc/ruby/html/Delegator.html
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title>class Delegator - RDoc Documentation</title>

<script type="text/javascript">
  var rdoc_rel_prefix = "./";
  var index_rel_prefix = "./";
</script>

<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>

<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">




<body id="top" role="document" class="class">
<nav role="navigation">
  <div id="project-navigation">
    <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2>
    <a href="./index.html" rel="home">Home</a>
  </h2>

  <div id="table-of-contents-navigation">
    <a href="./table_of_contents.html#pages">Pages</a>
    <a href="./table_of_contents.html#classes">Classes</a>
    <a href="./table_of_contents.html#methods">Methods</a>
  </div>
</div>

    <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

  </div>

  

  <div id="class-metadata">
    
    <div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  
  <p class="link"><a href="BasicObject.html">BasicObject</a>
  
</div>

    
    
    <!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    
    <li ><a href="#method-c-new">::new</a>
    
    <li ><a href="#method-i-21">#!</a>
    
    <li ><a href="#method-i-21-3D">#!=</a>
    
    <li ><a href="#method-i-3D-3D">#==</a>
    
    <li ><a href="#method-i-__getobj__">#__getobj__</a>
    
    <li ><a href="#method-i-__raise__">#__raise__</a>
    
    <li ><a href="#method-i-__setobj__">#__setobj__</a>
    
    <li ><a href="#method-i-eql-3F">#eql?</a>
    
    <li class="calls-super" ><a href="#method-i-freeze">#freeze</a>
    
    <li ><a href="#method-i-marshal_dump">#marshal_dump</a>
    
    <li ><a href="#method-i-marshal_load">#marshal_load</a>
    
    <li class="calls-super" ><a href="#method-i-method_missing">#method_missing</a>
    
    <li class="calls-super" ><a href="#method-i-methods">#methods</a>
    
    <li class="calls-super" ><a href="#method-i-protected_methods">#protected_methods</a>
    
    <li class="calls-super" ><a href="#method-i-public_methods">#public_methods</a>
    
    <li ><a href="#method-i-raise">#raise</a>
    
    <li ><a href="#method-i-respond_to_missing-3F">#respond_to_missing?</a>
    
    <li ><a href="#method-i-target_respond_to-3F">#target_respond_to?</a>
    
  </ul>
</div>

  </div>
</nav>

<main role="main" aria-labelledby="class-Delegator">
  <h1 id="class-Delegator" class="class">
    class Delegator
  </h1>

  <section class="description">
    
<p>This library provides three different ways to delegate method calls to an object.  The easiest to use is <a href="SimpleDelegator.html"><code>SimpleDelegator</code></a>.  Pass an object to the constructor and all methods supported by the object will be delegated.  This object can be changed later.</p>

<p>Going a step further, the top level DelegateClass method allows you to easily setup delegation through class inheritance.  This is considerably more flexible and thus probably the most common use for this library.</p>

<p>Finally, if you need full control over the delegation scheme, you can inherit from the abstract class <a href="Delegator.html"><code>Delegator</code></a> and customize as needed.  (If you find yourself needing this control, have a look at Forwardable which is also in the standard library.  It may suit your needs better.)</p>

<p>SimpleDelegator&#39;s implementation serves as a nice example of the use of Delegator:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">SimpleDelegator</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">Delegator</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__getobj__</span>
    <span class="ruby-ivar">@delegate_sd_obj</span> <span class="ruby-comment"># return object we are delegating to, required</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__setobj__</span>(<span class="ruby-identifier">obj</span>)
    <span class="ruby-ivar">@delegate_sd_obj</span> = <span class="ruby-identifier">obj</span> <span class="ruby-comment"># change delegation object,</span>
                           <span class="ruby-comment"># a feature we&#39;re providing</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<h2 id="class-Delegator-label-Notes">Notes<span><a href="#class-Delegator-label-Notes">&para;</a> <a href="#top">&uarr;</a></span></h2>

<p>Be advised, <a href="RDoc.html"><code>RDoc</code></a> will not detect delegated methods.</p>

  </section>

  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    
    <section class="constants-list">
      <header>
        <h3>Constants</h3>
      </header>
      <dl>
      
        <dt id="KERNEL_RESPOND_TO">KERNEL_RESPOND_TO
        
        <dd>
        
      
      </dl>
    </section>
    

    

    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Class Methods</h3>
       </header>

    
      <div id="method-c-new" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">new</span><span
            class="method-args">(obj)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Pass in the <em>obj</em> to delegate method calls to.  All methods supported by <em>obj</em> will be delegated to.</p>
          
          

          
          <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 71</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">obj</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Instance Methods</h3>
       </header>

    
      <div id="method-i-21" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">!</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Delegates ! to the _<em>getobj</em>_</p>
          
          

          
          <div class="method-source-code" id="21-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 176</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">!</span>
  <span class="ruby-operator">!</span><span class="ruby-identifier">__getobj__</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-21-3D" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">!=</span><span
            class="method-args">(obj)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns true if two objects are not considered of equal value.</p>
          
          

          
          <div class="method-source-code" id="21-3D-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 160</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">!=</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-identifier">__getobj__</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">obj</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-3D-3D" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">==</span><span
            class="method-args">(obj)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns true if two objects are considered of equal value.</p>
          
          

          
          <div class="method-source-code" id="3D-3D-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 152</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">==</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">obj</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-__getobj__" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">__getobj__</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>This method must be overridden by subclasses and should return the object method calls are being delegated to.</p>
          
          

          
          <div class="method-source-code" id="__getobj__-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 184</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__getobj__</span>
  <span class="ruby-identifier">__raise__</span> <span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>, <span class="ruby-string">&quot;need to define `__getobj__&#39;&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-__raise__" class="method-detail method-alias">
        
        <div class="method-heading">
          <span class="method-name">__raise__</span><span
            class="method-args">()</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
        </div>

        

        
        <div class="aliases">
          Alias for: <a href="Delegator.html#method-i-raise">raise</a>
        </div>
        
      </div>

    
      <div id="method-i-__setobj__" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">__setobj__</span><span
            class="method-args">(obj)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>This method must be overridden by subclasses and change the object delegate to <em>obj</em>.</p>
          
          

          
          <div class="method-source-code" id="__setobj__-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 192</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__setobj__</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-identifier">__raise__</span> <span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>, <span class="ruby-string">&quot;need to define `__setobj__&#39;&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-eql-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">eql?</span><span
            class="method-args">(obj)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns true if two objects are considered of equal value.</p>
          
          

          
          <div class="method-source-code" id="eql-3F-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 168</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eql?</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">__getobj__</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-freeze" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">freeze</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>:method: freeze Freeze both the object returned by _<em>getobj</em>_ and self.</p>
          
          
            <div class="method-calls-super">
              Calls superclass method
              
            </div>
          

          
          <div class="method-source-code" id="freeze-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 233</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">freeze</span>
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">freeze</span>
  <span class="ruby-keyword">super</span>()
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-marshal_dump" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">marshal_dump</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Serialization support for the object returned by _<em>getobj</em>_.</p>
          
          

          
          <div class="method-source-code" id="marshal_dump-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 199</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">marshal_dump</span>
  <span class="ruby-identifier">ivars</span> = <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-regexp">/\A@delegate_/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">var</span>}
  [
    <span class="ruby-value">:__v2__</span>,
    <span class="ruby-identifier">ivars</span>, <span class="ruby-identifier">ivars</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var</span>)},
    <span class="ruby-identifier">__getobj__</span>
  ]
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-marshal_load" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">marshal_load</span><span
            class="method-args">(data)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Reinitializes delegation from a serialized object.</p>
          
          

          
          <div class="method-source-code" id="marshal_load-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 211</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">marshal_load</span>(<span class="ruby-identifier">data</span>)
  <span class="ruby-identifier">version</span>, <span class="ruby-identifier">vars</span>, <span class="ruby-identifier">values</span>, <span class="ruby-identifier">obj</span> = <span class="ruby-identifier">data</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">==</span> <span class="ruby-value">:__v2__</span>
    <span class="ruby-identifier">vars</span>.<span class="ruby-identifier">each_with_index</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">var</span>, <span class="ruby-identifier">values</span>[<span class="ruby-identifier">i</span>])}
    <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">data</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-method_missing" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">method_missing</span><span
            class="method-args">(m, *args, &amp;block)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          
            <div class="method-calls-super">
              Calls superclass method
              <a href="BasicObject.html#method-i-method_missing"><code>BasicObject#method_missing</code></a>
            </div>
          

          
          <div class="method-source-code" id="method_missing-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 78</span>
               <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">method_missing</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-identifier">r</span> = <span class="ruby-keyword">true</span>
  <span class="ruby-identifier">target</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> {<span class="ruby-identifier">r</span> = <span class="ruby-keyword">false</span>}

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">target</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">elsif</span> <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">method_defined?</span>(<span class="ruby-identifier">m</span>) <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">private_method_defined?</span>(<span class="ruby-identifier">m</span>)
    <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">instance_method</span>(<span class="ruby-identifier">m</span>).<span class="ruby-identifier">bind_call</span>(<span class="ruby-keyword">self</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">super</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-methods" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">methods</span><span
            class="method-args">(all=true)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns the methods available to this delegate object as the union of this object&#39;s and _<em>getobj</em>_ methods.</p>
          
          
            <div class="method-calls-super">
              Calls superclass method
              
            </div>
          

          
          <div class="method-source-code" id="methods-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 127</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-protected_methods" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">protected_methods</span><span
            class="method-args">(all=true)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns the methods available to this delegate object as the union of this object&#39;s and _<em>getobj</em>_ protected methods.</p>
          
          
            <div class="method-calls-super">
              Calls superclass method
              
            </div>
          

          
          <div class="method-source-code" id="protected_methods-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 143</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">protected_methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">protected_methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-public_methods" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">public_methods</span><span
            class="method-args">(all=true)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Returns the methods available to this delegate object as the union of this object&#39;s and _<em>getobj</em>_ public methods.</p>
          
          
            <div class="method-calls-super">
              Calls superclass method
              
            </div>
          

          
          <div class="method-source-code" id="public_methods-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 135</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">public_methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">public_methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-raise" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">raise</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Use #__raise__ if your <a href="Delegator.html"><code>Delegator</code></a> does not have a object to delegate the <a href="Delegator.html#method-i-raise"><code>raise</code></a> method call.</p>
          
          

          
          <div class="method-source-code" id="raise-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 62</span>
  </pre>
          </div>
          
        </div>

        
        <div class="aliases">
          Also aliased as: <a href="Delegator.html#method-i-__raise__">__raise__</a>
        </div>
        

        
      </div>

    
      <div id="method-i-respond_to_missing-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">respond_to_missing?</span><span
            class="method-args">(m, include_private)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Checks for a method provided by this the delegate object by forwarding the call through _<em>getobj</em>_.</p>
          
          

          
          <div class="method-source-code" id="respond_to_missing-3F-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 95</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">respond_to_missing?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-identifier">r</span> = <span class="ruby-keyword">true</span>
  <span class="ruby-identifier">target</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> {<span class="ruby-identifier">r</span> = <span class="ruby-keyword">false</span>}
  <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;=</span> <span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">include_private</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">warn</span> <span class="ruby-node">&quot;delegator does not forward private method \##{m}&quot;</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">3</span>
    <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">r</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Private Instance Methods</h3>
       </header>

    
      <div id="method-i-target_respond_to-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">target_respond_to?</span><span
            class="method-args">(target, m, include_private)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Handle <a href="BasicObject.html"><code>BasicObject</code></a> instances</p>
          
          

          
          <div class="method-source-code" id="target_respond_to-3F-source">
            <pre><span class="ruby-comment"># File lib/delegate.rb, line 110</span>
        <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">case</span> <span class="ruby-identifier">target</span>
  <span class="ruby-keyword">when</span> <span class="ruby-constant">Object</span>
    <span class="ruby-identifier">target</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">if</span> <span class="ruby-constant">KERNEL_RESPOND_TO</span>.<span class="ruby-identifier">bind_call</span>(<span class="ruby-identifier">target</span>, <span class="ruby-value">:respond_to?</span>)
      <span class="ruby-identifier">target</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
    <span class="ruby-keyword">else</span>
      <span class="ruby-constant">KERNEL_RESPOND_TO</span>.<span class="ruby-identifier">bind_call</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
  </section>

</main>


<footer id="validator-badges" role="contentinfo">
  <p><a href="https://validator.w3.org/check/referer">Validate</a>
  <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>