csv_decision 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +26 -2
  4. data/csv_decision.gemspec +1 -1
  5. data/doc/CSVDecision/CellValidationError.html +2 -2
  6. data/doc/CSVDecision/Columns/Default.html +203 -23
  7. data/doc/CSVDecision/Columns/Dictionary.html +118 -25
  8. data/doc/CSVDecision/Columns.html +213 -31
  9. data/doc/CSVDecision/Data.html +1 -1
  10. data/doc/CSVDecision/Decide.html +1 -1
  11. data/doc/CSVDecision/Decision.html +1 -1
  12. data/doc/CSVDecision/Defaults.html +291 -0
  13. data/doc/CSVDecision/Dictionary/Entry.html +584 -47
  14. data/doc/CSVDecision/Dictionary.html +20 -20
  15. data/doc/CSVDecision/Error.html +2 -2
  16. data/doc/CSVDecision/FileError.html +1 -1
  17. data/doc/CSVDecision/Header.html +110 -33
  18. data/doc/CSVDecision/Input.html +1 -1
  19. data/doc/CSVDecision/Load.html +1 -1
  20. data/doc/CSVDecision/Matchers/Constant.html +12 -37
  21. data/doc/CSVDecision/Matchers/Function.html +1 -1
  22. data/doc/CSVDecision/Matchers/Guard.html +15 -13
  23. data/doc/CSVDecision/Matchers/Matcher.html +1 -1
  24. data/doc/CSVDecision/Matchers/Numeric.html +13 -21
  25. data/doc/CSVDecision/Matchers/Pattern.html +14 -14
  26. data/doc/CSVDecision/Matchers/Proc.html +1 -1
  27. data/doc/CSVDecision/Matchers/Range.html +13 -58
  28. data/doc/CSVDecision/Matchers/Symbol.html +1 -1
  29. data/doc/CSVDecision/Matchers.html +9 -9
  30. data/doc/CSVDecision/Options.html +1 -1
  31. data/doc/CSVDecision/Parse.html +90 -19
  32. data/doc/CSVDecision/Result.html +1 -1
  33. data/doc/CSVDecision/ScanRow.html +17 -17
  34. data/doc/CSVDecision/Table.html +50 -48
  35. data/doc/CSVDecision/TableValidationError.html +143 -0
  36. data/doc/CSVDecision/Validate.html +422 -0
  37. data/doc/CSVDecision.html +8 -8
  38. data/doc/_index.html +33 -1
  39. data/doc/class_list.html +1 -1
  40. data/doc/file.README.html +27 -3
  41. data/doc/index.html +27 -3
  42. data/doc/method_list.html +193 -89
  43. data/doc/top-level-namespace.html +1 -1
  44. data/lib/csv_decision/columns.rb +28 -27
  45. data/lib/csv_decision/defaults.rb +47 -0
  46. data/lib/csv_decision/dictionary.rb +104 -112
  47. data/lib/csv_decision/header.rb +13 -10
  48. data/lib/csv_decision/input.rb +53 -5
  49. data/lib/csv_decision/matchers/constant.rb +1 -2
  50. data/lib/csv_decision/matchers/guard.rb +3 -2
  51. data/lib/csv_decision/matchers/numeric.rb +4 -6
  52. data/lib/csv_decision/matchers/pattern.rb +6 -8
  53. data/lib/csv_decision/matchers/range.rb +1 -3
  54. data/lib/csv_decision/matchers.rb +7 -7
  55. data/lib/csv_decision/parse.rb +24 -3
  56. data/lib/csv_decision/scan_row.rb +16 -16
  57. data/lib/csv_decision/table.rb +3 -7
  58. data/lib/csv_decision/validate.rb +85 -0
  59. data/lib/csv_decision.rb +3 -1
  60. data/spec/csv_decision/columns_spec.rb +38 -22
  61. data/spec/csv_decision/examples_spec.rb +17 -0
  62. data/spec/csv_decision/matchers/range_spec.rb +0 -32
  63. data/spec/csv_decision/table_spec.rb +39 -0
  64. metadata +7 -2
data/doc/file.README.html CHANGED
@@ -262,7 +262,7 @@ operators are also supported: <code>!=</code>, <code>&gt;</code>,
262
262
  <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code>. For more simple
263
263
  examples see <code>spec/csv_decision/examples_spec.rb</code>.</p>
264
264
 
265
- <h4 id="label-Input+guard+conditions">Input guard conditions</h4>
265
+ <h4 id="label-Input+guard+conditions">Input <code>guard</code> conditions</h4>
266
266
 
267
267
  <p>Sometimes it&#39;s more convenient to write guard expressions in a single
268
268
  column specialized for that purpose. For example:</p>
@@ -290,7 +290,7 @@ following comparison operators are allowed: <code>==</code>,
290
290
  and <code>&lt;=</code>. Also, regular expressions are supported - i.e.,
291
291
  <code>=~</code> and <code>!~</code>.</p>
292
292
 
293
- <h4 id="label-Output+if+conditions">Output if conditions</h4>
293
+ <h4 id="label-Output+if+conditions">Output <code>if</code> conditions</h4>
294
294
 
295
295
  <p>In some situations it is useful to apply filter conditions <em>after</em>
296
296
  all the output columns have been derived. For example:</p>
@@ -317,6 +317,30 @@ following comparison operators are allowed: <code>==</code>,
317
317
  and <code>&lt;=</code>. Also, regular expressions are supported - i.e.,
318
318
  <code>=~</code> and <code>!~</code>.</p>
319
319
 
320
+ <h4 id="label-Input+set+columns">Input <code>set</code> columns</h4>
321
+
322
+ <p>If you wish to set default values in the input hash, you can use a
323
+ <code>set</code> column rather than an <code>in</code> column. The data row
324
+ beneath the header is used to specify the default expression. There are
325
+ three variations: <code>set</code> (unconditional default)
326
+ <code>set/nil?</code>(set if <code>nil?</code> true) and
327
+ <code>set/blank?</code> (set if <code>blank?</code> true). Note that the
328
+ <code>decide!</code> method will mutate the input hash.</p>
329
+
330
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~DATA</span>
331
+ <span class='tstring_content'> set/nil? :country, guard:, set: class, out :PAID, out: len, if:
332
+ </span><span class='tstring_content'> US, , :class.upcase,
333
+ </span><span class='tstring_content'> US, :CUSIP.present?, != PRIVATE, :CUSIP, :PAID.length, :len == 9
334
+ </span><span class='tstring_content'> !=US, :ISIN.present?, != PRIVATE, :ISIN, :PAID.length, :len == 12
335
+ </span><span class='tstring_content'> US, :CUSIP.present?, PRIVATE, :CUSIP, :PAID.length,
336
+ </span><span class='tstring_content'> !=US, :ISIN.present?, PRIVATE, :ISIN, :PAID.length,
337
+ </span><span class='heredoc_end'>DATA
338
+ </span>
339
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="CSVDecision.html" title="CSVDecision (module)">CSVDecision</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'><span class='object_link'><a href="CSVDecision.html#parse-class_method" title="CSVDecision.parse (method)">parse</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
340
+ <span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_decide'>decide</span><span class='lparen'>(</span><span class='label'>CUSIP:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>1234567890</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Private</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; {PAID: &#39;1234567890&#39;, len: 10}
341
+ </span><span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_decide'>decide</span><span class='lparen'>(</span><span class='label'>ISIN:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>123456789012</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>country:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GB</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>private</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; {PAID: &#39;123456789012&#39;, len: 12}
342
+ </span></code></pre>
343
+
320
344
  <h3 id="label-Testing">Testing</h3>
321
345
 
322
346
  <p><code>csv_decision</code> includes thorough <a
@@ -359,7 +383,7 @@ href="./LICENSE">LICENSE</a> document for more information.</p>
359
383
  </div></div>
360
384
 
361
385
  <div id="footer">
362
- Generated on Sat Jan 6 20:03:01 2018 by
386
+ Generated on Sat Jan 13 10:02:46 2018 by
363
387
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
364
388
  0.9.12 (ruby-2.4.0).
365
389
  </div>
data/doc/index.html CHANGED
@@ -262,7 +262,7 @@ operators are also supported: <code>!=</code>, <code>&gt;</code>,
262
262
  <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code>. For more simple
263
263
  examples see <code>spec/csv_decision/examples_spec.rb</code>.</p>
264
264
 
265
- <h4 id="label-Input+guard+conditions">Input guard conditions</h4>
265
+ <h4 id="label-Input+guard+conditions">Input <code>guard</code> conditions</h4>
266
266
 
267
267
  <p>Sometimes it&#39;s more convenient to write guard expressions in a single
268
268
  column specialized for that purpose. For example:</p>
@@ -290,7 +290,7 @@ following comparison operators are allowed: <code>==</code>,
290
290
  and <code>&lt;=</code>. Also, regular expressions are supported - i.e.,
291
291
  <code>=~</code> and <code>!~</code>.</p>
292
292
 
293
- <h4 id="label-Output+if+conditions">Output if conditions</h4>
293
+ <h4 id="label-Output+if+conditions">Output <code>if</code> conditions</h4>
294
294
 
295
295
  <p>In some situations it is useful to apply filter conditions <em>after</em>
296
296
  all the output columns have been derived. For example:</p>
@@ -317,6 +317,30 @@ following comparison operators are allowed: <code>==</code>,
317
317
  and <code>&lt;=</code>. Also, regular expressions are supported - i.e.,
318
318
  <code>=~</code> and <code>!~</code>.</p>
319
319
 
320
+ <h4 id="label-Input+set+columns">Input <code>set</code> columns</h4>
321
+
322
+ <p>If you wish to set default values in the input hash, you can use a
323
+ <code>set</code> column rather than an <code>in</code> column. The data row
324
+ beneath the header is used to specify the default expression. There are
325
+ three variations: <code>set</code> (unconditional default)
326
+ <code>set/nil?</code>(set if <code>nil?</code> true) and
327
+ <code>set/blank?</code> (set if <code>blank?</code> true). Note that the
328
+ <code>decide!</code> method will mutate the input hash.</p>
329
+
330
+ <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_data'>data</span> <span class='op'>=</span> <span class='heredoc_beg'>&lt;&lt;~DATA</span>
331
+ <span class='tstring_content'> set/nil? :country, guard:, set: class, out :PAID, out: len, if:
332
+ </span><span class='tstring_content'> US, , :class.upcase,
333
+ </span><span class='tstring_content'> US, :CUSIP.present?, != PRIVATE, :CUSIP, :PAID.length, :len == 9
334
+ </span><span class='tstring_content'> !=US, :ISIN.present?, != PRIVATE, :ISIN, :PAID.length, :len == 12
335
+ </span><span class='tstring_content'> US, :CUSIP.present?, PRIVATE, :CUSIP, :PAID.length,
336
+ </span><span class='tstring_content'> !=US, :ISIN.present?, PRIVATE, :ISIN, :PAID.length,
337
+ </span><span class='heredoc_end'>DATA
338
+ </span>
339
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="CSVDecision.html" title="CSVDecision (module)">CSVDecision</a></span></span><span class='period'>.</span><span class='id identifier rubyid_parse'><span class='object_link'><a href="CSVDecision.html#parse-class_method" title="CSVDecision.parse (method)">parse</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_data'>data</span><span class='rparen'>)</span>
340
+ <span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_decide'>decide</span><span class='lparen'>(</span><span class='label'>CUSIP:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>1234567890</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Private</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; {PAID: &#39;1234567890&#39;, len: 10}
341
+ </span><span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_decide'>decide</span><span class='lparen'>(</span><span class='label'>ISIN:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>123456789012</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>country:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>GB</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>private</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='comment'>#=&gt; {PAID: &#39;123456789012&#39;, len: 12}
342
+ </span></code></pre>
343
+
320
344
  <h3 id="label-Testing">Testing</h3>
321
345
 
322
346
  <p><code>csv_decision</code> includes thorough <a
@@ -359,7 +383,7 @@ href="./LICENSE">LICENSE</a> document for more information.</p>
359
383
  </div></div>
360
384
 
361
385
  <div id="footer">
362
- Generated on Sat Jan 6 20:03:00 2018 by
386
+ Generated on Sat Jan 13 10:02:45 2018 by
363
387
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
364
388
  0.9.12 (ruby-2.4.0).
365
389
  </div>