csv_decision 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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>