doc/CSVDecision/ScanRow.html in csv_decision-0.2.0 vs doc/CSVDecision/ScanRow.html in csv_decision-0.3.0

- old
+ new

@@ -131,13 +131,11 @@ </span> - <span class="note title readonly">readonly</span> - <span class="private note title">private</span> @@ -193,35 +191,10 @@ <ul class="summary"> <li class="public "> <span class="summary_signature"> - <a href="#eval_matcher-class_method" title="eval_matcher (class method)">.<strong>eval_matcher</strong>(proc:, hash:, value: nil) &#x21d2; Object </a> - - - - </span> - - - - - - - <span class="private note title">private</span> - - - <span class="summary_desc"><div class='inline'> -<p>Evaluate the cell proc against the column&#39;s input value and/or input -hash.</p> -</div></span> - -</li> - - - <li class="public "> - <span class="summary_signature"> - <a href="#scan-class_method" title="scan (class method)">.<strong>scan</strong>(column:, matchers:, cell:) &#x21d2; false, Matchers::Proc </a> </span> @@ -277,11 +250,11 @@ <li class="public "> <span class="summary_signature"> - <a href="#match_constants%3F-instance_method" title="#match_constants? (instance method)">#<strong>match_constants?</strong>(row:, scan_cols:) &#x21d2; Boolean </a> + <a href="#match%3F-instance_method" title="#match? (instance method)">#<strong>match?</strong>(row:, scan_cols:, hash:) &#x21d2; Boolean </a> </span> @@ -292,43 +265,19 @@ <span class="private note title">private</span> <span class="summary_desc"><div class='inline'> -<p>Match cells containing simple constants.</p> +<p>Match cells in the input hash against a decision table row.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> - <a href="#match_procs%3F-instance_method" title="#match_procs? (instance method)">#<strong>match_procs?</strong>(row:, input:) &#x21d2; Boolean </a> - - - - </span> - - - - - - - <span class="private note title">private</span> - - - <span class="summary_desc"><div class='inline'> -<p>Match cells containing a Proc object.</p> -</div></span> - -</li> - - - <li class="public "> - <span class="summary_signature"> - <a href="#scan_columns-instance_method" title="#scan_columns (instance method)">#<strong>scan_columns</strong>(row:, columns:, matchers:) &#x21d2; Array </a> </span> @@ -383,17 +332,17 @@ <tr> <td> <pre class="lines"> -86 -87 -88 -89</pre> +72 +73 +74 +75</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 86</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 72</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span> <span class='ivar'>@constants</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='ivar'>@procs</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>end</span></pre> @@ -406,15 +355,15 @@ <div id="instance_attr_details" class="attr_details"> <h2>Instance Attribute Details</h2> - <span id=""></span> + <span id="constants=-instance_method"></span> <div class="method_details first"> <h3 class="signature first" id="constants-instance_method"> - #<strong>constants</strong> &#x21d2; <tt>Array&lt;Integer&gt;</tt> <span class="extras">(readonly)</span> + #<strong>constants</strong> &#x21d2; <tt>Array&lt;Integer&gt;</tt> @@ -455,16 +404,16 @@ <tr> <td> <pre class="lines"> -81 -82 -83</pre> +67 +68 +69</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 81</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 67</span> <span class='kw'>def</span> <span class='id identifier rubyid_constants'>constants</span> <span class='ivar'>@constants</span> <span class='kw'>end</span></pre> </td> @@ -520,16 +469,16 @@ <tr> <td> <pre class="lines"> -84 -85 -86</pre> +70 +71 +72</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 84</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 70</span> <span class='kw'>def</span> <span class='id identifier rubyid_procs'>procs</span> <span class='ivar'>@procs</span> <span class='kw'>end</span></pre> </td> @@ -543,13 +492,13 @@ <div id="class_method_details" class="method_details_list"> <h2>Class Method Details</h2> <div class="method_details first"> - <h3 class="signature first" id="eval_matcher-class_method"> + <h3 class="signature first" id="scan-class_method"> - .<strong>eval_matcher</strong>(proc:, hash:, value: nil) &#x21d2; <tt>Object</tt> + .<strong>scan</strong>(column:, matchers:, cell:) &#x21d2; <tt>false</tt>, <tt><span class='object_link'><a href="Matchers/Proc.html" title="CSVDecision::Matchers::Proc (class)">Matchers::Proc</a></span></tt> @@ -558,131 +507,37 @@ <p class="note private"> <strong>This method is part of a private API.</strong> You should avoid using this method if possible, as it may be removed or be changed in the future. </p> -<p>Evaluate the cell proc against the column&#39;s input value and/or input -hash.</p> +<p>Scan the table cell against all matches.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> - <span class='name'>proc</span> + <span class='name'>column</span> - <span class='type'>(<tt>CSVDecision::Proc</tt>)</span> + <span class='type'>(<tt><span class='object_link'><a href="Dictionary/Entry.html" title="CSVDecision::Dictionary::Entry (class)">Dictionary::Entry</a></span></tt>)</span> &mdash; <div class='inline'> -<p>Proc in the table cell.</p> +<p>Column dictionary entry.</p> </div> </li> <li> - <span class='name'>value</span> - - - <span class='type'>(<tt>Object</tt>)</span> - - - - &mdash; - <div class='inline'> -<p>Value supplied in the input hash corresponding to this column.</p> -</div> - - </li> - - <li> - - <span class='name'>hash</span> - - - <span class='type'>(<tt>{Symbol=&gt;Object}</tt>)</span> - - - - &mdash; - <div class='inline'> -<p>Input hash with symbolized keys.</p> -</div> - - </li> - -</ul> - - -</div><table class="source_code"> - <tr> - <td> - <pre class="lines"> - - -35 -36 -37 -38 -39 -40 -41 -42 -43</pre> - </td> - <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 35</span> - -<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_eval_matcher'>eval_matcher</span><span class='lparen'>(</span><span class='label'>proc:</span><span class='comma'>,</span> <span class='label'>hash:</span><span class='comma'>,</span> <span class='label'>value:</span> <span class='kw'>nil</span><span class='rparen'>)</span> - <span class='id identifier rubyid_function'>function</span> <span class='op'>=</span> <span class='id identifier rubyid_proc'>proc</span><span class='period'>.</span><span class='id identifier rubyid_function'>function</span> - - <span class='comment'># A symbol guard expression just needs to be passed the input hash -</span> <span class='kw'>return</span> <span class='id identifier rubyid_function'>function</span><span class='lbracket'>[</span><span class='id identifier rubyid_hash'>hash</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_proc'>proc</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:guard</span> - - <span class='comment'># All other procs can take one or two args -</span> <span class='id identifier rubyid_function'>function</span><span class='period'>.</span><span class='id identifier rubyid_arity'>arity</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>?</span> <span class='id identifier rubyid_function'>function</span><span class='lbracket'>[</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_function'>function</span><span class='lbracket'>[</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_hash'>hash</span><span class='rbracket'>]</span> -<span class='kw'>end</span></pre> - </td> - </tr> -</table> -</div> - - <div class="method_details "> - <h3 class="signature " id="scan-class_method"> - - .<strong>scan</strong>(column:, matchers:, cell:) &#x21d2; <tt>false</tt>, <tt><span class='object_link'><a href="Matchers/Proc.html" title="CSVDecision::Matchers::Proc (class)">Matchers::Proc</a></span></tt> - - - - - -</h3><div class="docstring"> - <div class="discussion"> - <p class="note private"> - <strong>This method is part of a private API.</strong> - You should avoid using this method if possible, as it may be removed or be changed in the future. -</p> - -<p>Scan the table cell against all matches.</p> - - - </div> -</div> -<div class="tags"> - <p class="tag_title">Parameters:</p> -<ul class="param"> - - <li> - <span class='name'>matchers</span> <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="Matchers/Matcher.html" title="CSVDecision::Matchers::Matcher (class)">Matchers::Matcher</a></span>&gt;</tt>)</span> @@ -721,22 +576,22 @@ <tr> <td> <pre class="lines"> -20 21 22 23 24 25 26 27 -28</pre> +28 +29</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 20</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 21</span> <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_scan'>scan</span><span class='lparen'>(</span><span class='label'>column:</span><span class='comma'>,</span> <span class='label'>matchers:</span><span class='comma'>,</span> <span class='label'>cell:</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_cell'>cell</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='id identifier rubyid_proc'>proc</span> <span class='op'>=</span> <span class='id identifier rubyid_scan_matchers'>scan_matchers</span><span class='lparen'>(</span><span class='label'>column:</span> <span class='id identifier rubyid_column'>column</span><span class='comma'>,</span> <span class='label'>matchers:</span> <span class='id identifier rubyid_matchers'>matchers</span><span class='comma'>,</span> <span class='label'>cell:</span> <span class='id identifier rubyid_cell'>cell</span><span class='rparen'>)</span> @@ -755,13 +610,13 @@ <div id="instance_method_details" class="method_details_list"> <h2>Instance Method Details</h2> <div class="method_details first"> - <h3 class="signature first" id="match_constants?-instance_method"> + <h3 class="signature first" id="match?-instance_method"> - #<strong>match_constants?</strong>(row:, scan_cols:) &#x21d2; <tt>Boolean</tt> + #<strong>match?</strong>(row:, scan_cols:, hash:) &#x21d2; <tt>Boolean</tt> @@ -770,32 +625,21 @@ <p class="note private"> <strong>This method is part of a private API.</strong> You should avoid using this method if possible, as it may be removed or be changed in the future. </p> -<p>Match cells containing simple constants.</p> +<p>Match cells in the input hash against a decision table row.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> - <span class='name'>scan_cols</span> - - - <span class='type'>(<tt>Hash{Integer=&gt;Object}</tt>)</span> - - - - </li> - - <li> - <span class='name'>row</span> <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span> @@ -833,137 +677,31 @@ <tr> <td> <pre class="lines"> -119 -120 -121 -122 -123 -124 -125</pre> +108 +109 +110 +111 +112 +113 +114 +115 +116</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 119</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 108</span> -<span class='kw'>def</span> <span class='id identifier rubyid_match_constants?'>match_constants?</span><span class='lparen'>(</span><span class='label'>row:</span><span class='comma'>,</span> <span class='label'>scan_cols:</span><span class='rparen'>)</span> - <span class='id identifier rubyid_constants'>constants</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_col'>col</span><span class='op'>|</span> - <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='id identifier rubyid_scan_cols'>scan_cols</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> - <span class='kw'>end</span> +<span class='kw'>def</span> <span class='id identifier rubyid_match?'>match?</span><span class='lparen'>(</span><span class='label'>row:</span><span class='comma'>,</span> <span class='label'>scan_cols:</span><span class='comma'>,</span> <span class='label'>hash:</span><span class='rparen'>)</span> + <span class='comment'># Check any table row cell constants first, and maybe fail fast... +</span> <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='ivar'>@constants</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_col'>col</span><span class='op'>|</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='id identifier rubyid_scan_cols'>scan_cols</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> <span class='rbrace'>}</span> - <span class='kw'>true</span> -<span class='kw'>end</span></pre> - </td> - </tr> -</table> -</div> - - <div class="method_details "> - <h3 class="signature " id="match_procs?-instance_method"> - - #<strong>match_procs?</strong>(row:, input:) &#x21d2; <tt>Boolean</tt> - + <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='ivar'>@procs</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> - - - -</h3><div class="docstring"> - <div class="discussion"> - <p class="note private"> - <strong>This method is part of a private API.</strong> - You should avoid using this method if possible, as it may be removed or be changed in the future. -</p> - -<p>Match cells containing a Proc object.</p> - - - </div> -</div> -<div class="tags"> - <p class="tag_title">Parameters:</p> -<ul class="param"> - - <li> - - <span class='name'>input</span> - - - <span class='type'>(<tt>Hash{Symbol =&gt; Hash{Symbol=&gt;Object}, Hash{Integer=&gt;Object}}</tt>)</span> - - - - </li> - - <li> - - <span class='name'>row</span> - - - <span class='type'>(<tt>Array&lt;String&gt;</tt>)</span> - - - - &mdash; - <div class='inline'> -<p>Data row - still just all string constants.</p> -</div> - - </li> - -</ul> - -<p class="tag_title">Returns:</p> -<ul class="return"> - - <li> - - - <span class='type'>(<tt>Boolean</tt>)</span> - - - - &mdash; - <div class='inline'> -<p>True for a match, false otherwise.</p> -</div> - - </li> - -</ul> - -</div><table class="source_code"> - <tr> - <td> - <pre class="lines"> - - -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141</pre> - </td> - <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 131</span> - -<span class='kw'>def</span> <span class='id identifier rubyid_match_procs?'>match_procs?</span><span class='lparen'>(</span><span class='label'>row:</span><span class='comma'>,</span> <span class='label'>input:</span><span class='rparen'>)</span> - <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='id identifier rubyid_input'>input</span><span class='lbracket'>[</span><span class='symbol'>:hash</span><span class='rbracket'>]</span> - <span class='id identifier rubyid_scan_cols'>scan_cols</span> <span class='op'>=</span> <span class='id identifier rubyid_input'>input</span><span class='lbracket'>[</span><span class='symbol'>:scan_cols</span><span class='rbracket'>]</span> - - <span class='id identifier rubyid_procs'>procs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_col'>col</span><span class='op'>|</span> - <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="CSVDecision::ScanRow (class)">ScanRow</a></span></span><span class='period'>.</span><span class='id identifier rubyid_eval_matcher'><span class='object_link'><a href="#eval_matcher-class_method" title="CSVDecision::ScanRow.eval_matcher (method)">eval_matcher</a></span></span><span class='lparen'>(</span><span class='label'>proc:</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>value:</span> <span class='id identifier rubyid_scan_cols'>scan_cols</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>hash:</span> <span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span> - <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='id identifier rubyid_match'>match</span> - <span class='kw'>end</span> - - <span class='kw'>true</span> + <span class='comment'># These table row cells are Proc objects which need evaluating +</span> <span class='ivar'>@procs</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_col'>col</span><span class='op'>|</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='label'>value:</span> <span class='id identifier rubyid_scan_cols'>scan_cols</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>hash:</span> <span class='id identifier rubyid_hash'>hash</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> @@ -1068,39 +806,45 @@ <tr> <td> <pre class="lines"> +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 99 100 101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113</pre> +102</pre> </td> <td> - <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 99</span> + <pre class="code"><span class="info file"># File 'lib/csv_decision/scan_row.rb', line 85</span> <span class='kw'>def</span> <span class='id identifier rubyid_scan_columns'>scan_columns</span><span class='lparen'>(</span><span class='label'>row:</span><span class='comma'>,</span> <span class='label'>columns:</span><span class='comma'>,</span> <span class='label'>matchers:</span><span class='rparen'>)</span> <span class='id identifier rubyid_columns'>columns</span><span class='period'>.</span><span class='id identifier rubyid_each_pair'>each_pair</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_col'>col</span><span class='comma'>,</span> <span class='id identifier rubyid_column'>column</span><span class='op'>|</span> - <span class='comment'># An empty input cell matches everything, and so never needs to be scanned -</span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='id identifier rubyid_cell'>cell</span> <span class='op'>=</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_ins?'>ins?</span> + <span class='id identifier rubyid_cell'>cell</span> <span class='op'>=</span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> - <span class='comment'># If the column is text only then no special matchers need be invoked + <span class='comment'># An empty input cell matches everything, and so never needs to be scanned, +</span> <span class='comment'># but it cannot be indexed either. +</span> <span class='kw'>next</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_indexed'>indexed</span> <span class='op'>=</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_cell'>cell</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_ins?'>ins?</span> + + <span class='comment'># If the column is text only then no special matchers need be used. </span> <span class='kw'>next</span> <span class='ivar'>@constants</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_col'>col</span> <span class='kw'>if</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_eval'>eval</span> <span class='op'>==</span> <span class='kw'>false</span> <span class='comment'># Need to scan the cell against all matchers, and possibly overwrite -</span> <span class='comment'># the cell contents with a Matchers::Proc. +</span> <span class='comment'># the cell contents with a Matchers::Proc value. </span> <span class='id identifier rubyid_row'>row</span><span class='lbracket'>[</span><span class='id identifier rubyid_col'>col</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_scan_cell'>scan_cell</span><span class='lparen'>(</span><span class='label'>column:</span> <span class='id identifier rubyid_column'>column</span><span class='comma'>,</span> <span class='label'>col:</span> <span class='id identifier rubyid_col'>col</span><span class='comma'>,</span> <span class='label'>matchers:</span> <span class='id identifier rubyid_matchers'>matchers</span><span class='comma'>,</span> <span class='label'>cell:</span> <span class='id identifier rubyid_cell'>cell</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='id identifier rubyid_row'>row</span> <span class='kw'>end</span></pre> @@ -1112,10 +856,10 @@ </div> </div> <div id="footer"> - Generated on Sat Jan 13 10:02:47 2018 by + Generated on Sat Jan 20 15:44:35 2018 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.9.12 (ruby-2.4.0). </div> </div> \ No newline at end of file