<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> Module: Mangrove::ControlFlow::Handler::ClassMethods — Documentation by YARD 0.9.34 </title> <link rel="stylesheet" href="../../../css/style.css" type="text/css" /> <link rel="stylesheet" href="../../../css/common.css" type="text/css" /> <script type="text/javascript"> pathId = "Mangrove::ControlFlow::Handler::ClassMethods"; relpath = '../../../'; </script> <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script> <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script> </head> <body> <div class="nav_wrap"> <iframe id="nav" src="../../../class_list.html?1"></iframe> <div id="resizer"></div> </div> <div id="main" tabindex="-1"> <div id="header"> <div id="menu"> <a href="../../../_index.html">Index (C)</a> » <span class='title'><span class='object_link'><a href="../../../Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span> » <span class='title'><span class='object_link'><a href="../../ControlFlow.html" title="Mangrove::ControlFlow (module)">ControlFlow</a></span></span> » <span class='title'><span class='object_link'><a href="../Handler.html" title="Mangrove::ControlFlow::Handler (module)">Handler</a></span></span> » <span class="title">ClassMethods</span> </div> <div id="search"> <a class="full_list_link" id="class_list_link" href="../../../class_list.html"> <svg width="24" height="24"> <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect> <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect> <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect> </svg> </a> </div> <div class="clear"></div> </div> <div id="content"><h1>Module: Mangrove::ControlFlow::Handler::ClassMethods <span class="abstract note title">Abstract</span> </h1> <div class="box_info"> <dl> <dt>Extended by:</dt> <dd>T::Helpers, T::Sig</dd> </dl> <dl> <dt>Defined in:</dt> <dd>lib/mangrove/control_flow.rb</dd> </dl> </div> <h2>Overview</h2><div class="docstring"> <div class="discussion"> <div class="note abstract"> <strong>This module is abstract.</strong> <div class='inline'> <p>Subclasses must implement the ‘abstract` methods below.</p> </div> </div> <p>Mangrove::ControlFlow::ClassMethods</p> </div> </div> <div class="tags"> </div> <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#__mangrove_flow_controlled_method_names-instance_method" title="#__mangrove_flow_controlled_method_names (instance method)">#<strong>__mangrove_flow_controlled_method_names</strong> ⇒ Hash{Symbol => Set<Symbol>}<sup>?</sup> </a> </span> <span class="note title readonly">readonly</span> <span class="summary_desc"><div class='inline'></div></span> </li> </ul> <h2> Instance Method Summary <small><a href="#" class="summary_toggle">collapse</a></small> </h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#handle_flow_control_exception-instance_method" title="#handle_flow_control_exception (instance method)">#<strong>handle_flow_control_exception</strong>(signal) ⇒ void </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#method_added-instance_method" title="#method_added (instance method)">#<strong>method_added</strong>(method_name) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#singleton_method_added-instance_method" title="#singleton_method_added (instance method)">#<strong>singleton_method_added</strong>(method_name) ⇒ Object </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#wrap_original_method_to_handle_flow_control_exception-instance_method" title="#wrap_original_method_to_handle_flow_control_exception (instance method)">#<strong>wrap_original_method_to_handle_flow_control_exception</strong>(original_method) ⇒ void </a> </span> <span class="summary_desc"><div class='inline'></div></span> </li> </ul> <div id="instance_attr_details" class="attr_details"> <h2>Instance Attribute Details</h2> <span id=""></span> <div class="method_details first"> <h3 class="signature first" id="__mangrove_flow_controlled_method_names-instance_method"> #<strong>__mangrove_flow_controlled_method_names</strong> ⇒ <tt>Hash{Symbol => Set<Symbol>}</tt><sup>?</sup> <span class="extras">(readonly)</span> </h3><div class="docstring"> <div class="discussion"> </div> </div> <div class="tags"> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Hash{Symbol => Set<Symbol>}</tt>, <tt>nil</tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 78 79 80</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/mangrove/control_flow.rb', line 78</span> <span class='kw'>def</span> <span class='id identifier rubyid___mangrove_flow_controlled_method_names'>__mangrove_flow_controlled_method_names</span> <span class='ivar'>@__mangrove_flow_controlled_method_names</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="instance_method_details" class="method_details_list"> <h2>Instance Method Details</h2> <div class="method_details first"> <h3 class="signature first" id="handle_flow_control_exception-instance_method"> #<strong>handle_flow_control_exception</strong>(signal) ⇒ <tt>void</tt> </h3><div class="docstring"> <div class="discussion"> <p class="note returns_void">This method returns an undefined value.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>signal</span> <span class='type'>(<tt><span class='object_link'><a href="../ControlSignal.html" title="Mangrove::ControlFlow::ControlSignal (module)">ControlFlow::ControlSignal</a></span></tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 49 50 51</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/mangrove/control_flow.rb', line 49</span> <span class='kw'>def</span> <span class='id identifier rubyid_handle_flow_control_exception'>handle_flow_control_exception</span><span class='lparen'>(</span><span class='id identifier rubyid_signal'>signal</span><span class='rparen'>)</span> <span class='id identifier rubyid_signal'>signal</span><span class='period'>.</span><span class='id identifier rubyid_inner_value'>inner_value</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="method_added-instance_method"> #<strong>method_added</strong>(method_name) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 36 37 38 39 40 41 42 43 44 45 46</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/mangrove/control_flow.rb', line 36</span> <span class='kw'>def</span> <span class='id identifier rubyid_method_added'>method_added</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_bind'>bind</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Mangrove::ControlFlow::Handler::ClassMethods (module)">ClassMethods</a></span></span><span class='comma'>,</span> <span class='const'>Module</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>super</span> <span class='kw'>unless</span> <span class='ivar'>@__inside_mangrove_control_flow</span> <span class='id identifier rubyid_original_method'>original_method</span> <span class='op'>=</span> <span class='id identifier rubyid_instance_method'>instance_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='id identifier rubyid_wrap_original_method_to_handle_flow_control_exception'>wrap_original_method_to_handle_flow_control_exception</span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="singleton_method_added-instance_method"> #<strong>singleton_method_added</strong>(method_name) ⇒ <tt>Object</tt> </h3><table class="source_code"> <tr> <td> <pre class="lines"> 24 25 26 27 28 29 30 31 32 33 34</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/mangrove/control_flow.rb', line 24</span> <span class='kw'>def</span> <span class='id identifier rubyid_singleton_method_added'>singleton_method_added</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_bind'>bind</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Mangrove::ControlFlow::Handler::ClassMethods (module)">ClassMethods</a></span></span><span class='comma'>,</span> <span class='const'>Module</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>super</span> <span class='kw'>unless</span> <span class='ivar'>@__inside_mangrove_control_flow</span> <span class='id identifier rubyid_original_method'>original_method</span> <span class='op'>=</span> <span class='id identifier rubyid_method'>method</span><span class='lparen'>(</span><span class='id identifier rubyid_method_name'>method_name</span><span class='rparen'>)</span> <span class='id identifier rubyid_wrap_original_method_to_handle_flow_control_exception'>wrap_original_method_to_handle_flow_control_exception</span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="wrap_original_method_to_handle_flow_control_exception-instance_method"> #<strong>wrap_original_method_to_handle_flow_control_exception</strong>(original_method) ⇒ <tt>void</tt> </h3><div class="docstring"> <div class="discussion"> <p class="note returns_void">This method returns an undefined value.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>original_method</span> <span class='type'>(<tt>Method</tt>, <tt>UnboundMethod</tt>)</span> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/mangrove/control_flow.rb', line 54</span> <span class='kw'>def</span> <span class='id identifier rubyid_wrap_original_method_to_handle_flow_control_exception'>wrap_original_method_to_handle_flow_control_exception</span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='rparen'>)</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_bind'>bind</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_class_of'>class_of</span><span class='lparen'>(</span><span class='const'>Kernel</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='ivar'>@__mangrove_flow_controlled_method_names</span> <span class='op'>||=</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_let'>let</span><span class='lparen'>(</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_nilable'>nilable</span><span class='lparen'>(</span><span class='const'>T</span><span class='op'>::</span><span class='const'>Hash</span><span class='lbracket'>[</span><span class='const'>Symbol</span><span class='comma'>,</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Set</span><span class='lbracket'>[</span><span class='const'>Symbol</span><span class='rbracket'>]</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rparen'>)</span> <span class='ivar'>@__mangrove_flow_controlled_method_names</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_intern'>intern</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_let'>let</span><span class='lparen'>(</span><span class='const'>Set</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='comma'>,</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Set</span><span class='lbracket'>[</span><span class='const'>Symbol</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>if</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_cast'>cast</span><span class='lparen'>(</span><span class='ivar'>@__mangrove_flow_controlled_method_names</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_intern'>intern</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Set</span><span class='lbracket'>[</span><span class='const'>Symbol</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='kw'>begin</span> <span class='ivar'>@__inside_mangrove_control_flow</span> <span class='op'>=</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_let'>let</span><span class='lparen'>(</span><span class='kw'>true</span><span class='comma'>,</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_nilable'>nilable</span><span class='lparen'>(</span><span class='const'>T</span><span class='op'>::</span><span class='const'>Boolean</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='id identifier rubyid_class_eval'>class_eval</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../../../Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../ControlFlow.html" title="Mangrove::ControlFlow (module)">ControlFlow</a></span></span><span class='period'>.</span><span class='id identifier rubyid_impl!'><span class='object_link'><a href="../../ControlFlow.html#impl!-class_method" title="Mangrove::ControlFlow.impl! (method)">impl!</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_original_method'>original_method</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='kw'>ensure</span> <span class='ivar'>@__inside_mangrove_control_flow</span> <span class='op'>=</span> <span class='kw'>false</span> <span class='kw'>end</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_cast'>cast</span><span class='lparen'>(</span><span class='ivar'>@__mangrove_flow_controlled_method_names</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_intern'>intern</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Set</span><span class='lbracket'>[</span><span class='const'>Symbol</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'><<</span> <span class='id identifier rubyid_original_method'>original_method</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Fri Sep 1 17:32:57 2023 by <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.34 (ruby-3.2.2). </div> </div> </body> </html>