csv_decision 0.4.1 → 0.5.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +43 -19
  4. data/csv_decision.gemspec +1 -1
  5. data/doc/CSVDecision.html +6 -6
  6. data/doc/CSVDecision/CellValidationError.html +1 -1
  7. data/doc/CSVDecision/Columns.html +124 -42
  8. data/doc/CSVDecision/Columns/Dictionary.html +101 -7
  9. data/doc/CSVDecision/Data.html +1 -1
  10. data/doc/CSVDecision/Decision.html +444 -98
  11. data/doc/CSVDecision/Defaults.html +1 -1
  12. data/doc/CSVDecision/Dictionary.html +4 -4
  13. data/doc/CSVDecision/Dictionary/Entry.html +31 -31
  14. data/doc/CSVDecision/Error.html +1 -1
  15. data/doc/CSVDecision/FileError.html +1 -1
  16. data/doc/CSVDecision/Header.html +2 -2
  17. data/doc/CSVDecision/Index.html +1 -1
  18. data/doc/CSVDecision/Input.html +129 -3
  19. data/doc/CSVDecision/Load.html +1 -1
  20. data/doc/CSVDecision/Matchers.html +168 -41
  21. data/doc/CSVDecision/Matchers/Constant.html +7 -7
  22. data/doc/CSVDecision/Matchers/Function.html +1 -1
  23. data/doc/CSVDecision/Matchers/Guard.html +16 -16
  24. data/doc/CSVDecision/Matchers/Matcher.html +13 -13
  25. data/doc/CSVDecision/Matchers/Numeric.html +8 -14
  26. data/doc/CSVDecision/Matchers/Pattern.html +10 -10
  27. data/doc/CSVDecision/Matchers/Proc.html +1 -1
  28. data/doc/CSVDecision/Matchers/Range.html +1 -1
  29. data/doc/CSVDecision/Matchers/Symbol.html +19 -29
  30. data/doc/CSVDecision/Options.html +1 -1
  31. data/doc/CSVDecision/Parse.html +4 -4
  32. data/doc/CSVDecision/Paths.html +742 -0
  33. data/doc/CSVDecision/Result.html +139 -70
  34. data/doc/CSVDecision/Scan.html +313 -0
  35. data/doc/CSVDecision/Scan/InputHashes.html +369 -0
  36. data/doc/CSVDecision/ScanRow.html +1 -1
  37. data/doc/CSVDecision/Table.html +134 -52
  38. data/doc/CSVDecision/TableValidationError.html +1 -1
  39. data/doc/CSVDecision/Validate.html +1 -1
  40. data/doc/_index.html +26 -5
  41. data/doc/class_list.html +1 -1
  42. data/doc/file.README.html +50 -28
  43. data/doc/index.html +50 -28
  44. data/doc/method_list.html +234 -98
  45. data/doc/top-level-namespace.html +1 -1
  46. data/lib/csv_decision.rb +3 -0
  47. data/lib/csv_decision/columns.rb +11 -0
  48. data/lib/csv_decision/decision.rb +82 -56
  49. data/lib/csv_decision/dictionary.rb +5 -1
  50. data/lib/csv_decision/header.rb +1 -1
  51. data/lib/csv_decision/input.rb +14 -11
  52. data/lib/csv_decision/parse.rb +6 -2
  53. data/lib/csv_decision/paths.rb +78 -0
  54. data/lib/csv_decision/result.rb +42 -35
  55. data/lib/csv_decision/scan.rb +116 -0
  56. data/lib/csv_decision/table.rb +18 -7
  57. data/lib/csv_decision/validate.rb +1 -1
  58. data/spec/csv_decision/columns_spec.rb +14 -0
  59. data/spec/csv_decision/decision_spec.rb +1 -3
  60. data/spec/csv_decision/examples_spec.rb +25 -0
  61. data/spec/csv_decision/table_spec.rb +87 -0
  62. metadata +7 -2
@@ -133,7 +133,7 @@
133
133
  </div>
134
134
 
135
135
  <div id="footer">
136
- Generated on Sun Jan 28 14:41:48 2018 by
136
+ Generated on Sun Feb 11 10:26:07 2018 by
137
137
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
138
138
  0.9.12 (ruby-2.4.0).
139
139
  </div>
@@ -412,7 +412,7 @@ only required at table load time.</p>
412
412
  </div>
413
413
 
414
414
  <div id="footer">
415
- Generated on Sun Jan 28 14:41:48 2018 by
415
+ Generated on Sun Feb 11 10:26:07 2018 by
416
416
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
417
417
  0.9.12 (ruby-2.4.0).
418
418
  </div>
@@ -136,16 +136,16 @@
136
136
  </li>
137
137
 
138
138
  <li>
139
- <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html" title="CSVDecision::Columns::Dictionary (class)">Dictionary</a></span>
139
+ <span class='object_link'><a href="CSVDecision/Dictionary.html" title="CSVDecision::Dictionary (module)">Dictionary</a></span>
140
140
 
141
- <small>(CSVDecision::Columns)</small>
141
+ <small>(CSVDecision)</small>
142
142
 
143
143
  </li>
144
144
 
145
145
  <li>
146
- <span class='object_link'><a href="CSVDecision/Dictionary.html" title="CSVDecision::Dictionary (module)">Dictionary</a></span>
146
+ <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html" title="CSVDecision::Columns::Dictionary (class)">Dictionary</a></span>
147
147
 
148
- <small>(CSVDecision)</small>
148
+ <small>(CSVDecision::Columns)</small>
149
149
 
150
150
  </li>
151
151
 
@@ -245,6 +245,13 @@
245
245
 
246
246
  </li>
247
247
 
248
+ <li>
249
+ <span class='object_link'><a href="CSVDecision/Scan/InputHashes.html" title="CSVDecision::Scan::InputHashes (class)">InputHashes</a></span>
250
+
251
+ <small>(CSVDecision::Scan)</small>
252
+
253
+ </li>
254
+
248
255
  </ul>
249
256
  </ul>
250
257
 
@@ -330,6 +337,13 @@
330
337
 
331
338
  </li>
332
339
 
340
+ <li>
341
+ <span class='object_link'><a href="CSVDecision/Paths.html" title="CSVDecision::Paths (class)">Paths</a></span>
342
+
343
+ <small>(CSVDecision)</small>
344
+
345
+ </li>
346
+
333
347
  <li>
334
348
  <span class='object_link'><a href="CSVDecision/Matchers/Pattern.html" title="CSVDecision::Matchers::Pattern (class)">Pattern</a></span>
335
349
 
@@ -374,6 +388,13 @@
374
388
  <li class="letter">S</li>
375
389
  <ul>
376
390
 
391
+ <li>
392
+ <span class='object_link'><a href="CSVDecision/Scan.html" title="CSVDecision::Scan (class)">Scan</a></span>
393
+
394
+ <small>(CSVDecision)</small>
395
+
396
+ </li>
397
+
377
398
  <li>
378
399
  <span class='object_link'><a href="CSVDecision/ScanRow.html" title="CSVDecision::ScanRow (class)">ScanRow</a></span>
379
400
 
@@ -440,7 +461,7 @@
440
461
  </div>
441
462
 
442
463
  <div id="footer">
443
- Generated on Sun Jan 28 14:41:46 2018 by
464
+ Generated on Sun Feb 11 10:26:05 2018 by
444
465
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
445
466
  0.9.12 (ruby-2.4.0).
446
467
  </div>
@@ -43,7 +43,7 @@
43
43
 
44
44
  <ul id="full_list" class="class">
45
45
  <li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
46
- <li id='object_CSVDecision' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision.html" title="CSVDecision (module)">CSVDecision</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_CSVDecision::CellValidationError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/CellValidationError.html" title="CSVDecision::CellValidationError (class)">CellValidationError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Columns' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Columns.html" title="CSVDecision::Columns (class)">Columns</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Columns::Dictionary' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Columns/Dictionary.html" title="CSVDecision::Columns::Dictionary (class)">Dictionary</a></span> &lt; Object<small class='search_info'>CSVDecision::Columns</small></div></li></ul></li><li id='object_CSVDecision::Data' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Data.html" title="CSVDecision::Data (module)">Data</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Decision' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Decision.html" title="CSVDecision::Decision (class)">Decision</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Defaults' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Defaults.html" title="CSVDecision::Defaults (module)">Defaults</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Dictionary' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Dictionary.html" title="CSVDecision::Dictionary (module)">Dictionary</a></span><small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Dictionary::Entry' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Dictionary/Entry.html" title="CSVDecision::Dictionary::Entry (class)">Entry</a></span> &lt; Object<small class='search_info'>CSVDecision::Dictionary</small></div></li></ul></li><li id='object_CSVDecision::Error' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Error.html" title="CSVDecision::Error (class)">Error</a></span> &lt; StandardError<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::FileError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/FileError.html" title="CSVDecision::FileError (class)">FileError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Header' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Header.html" title="CSVDecision::Header (module)">Header</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Index' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Index.html" title="CSVDecision::Index (class)">Index</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Input' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Input.html" title="CSVDecision::Input (module)">Input</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Load' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Load.html" title="CSVDecision::Load (module)">Load</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Matchers' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Matchers.html" title="CSVDecision::Matchers (class)">Matchers</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Matchers::Constant' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Constant.html" title="CSVDecision::Matchers::Constant (class)">Constant</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Function' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Function.html" title="CSVDecision::Matchers::Function (class)">Function</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Guard' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Guard.html" title="CSVDecision::Matchers::Guard (class)">Guard</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Matcher' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Matcher.html" title="CSVDecision::Matchers::Matcher (class)">Matcher</a></span> &lt; Object<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Numeric' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Numeric.html" title="CSVDecision::Matchers::Numeric (class)">Numeric</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Pattern' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Pattern.html" title="CSVDecision::Matchers::Pattern (class)">Pattern</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Proc' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Proc.html" title="CSVDecision::Matchers::Proc (class)">Proc</a></span> &lt; Array<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Range' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Range.html" title="CSVDecision::Matchers::Range (class)">Range</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Symbol' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Symbol.html" title="CSVDecision::Matchers::Symbol (class)">Symbol</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li></ul></li><li id='object_CSVDecision::Options' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Options.html" title="CSVDecision::Options (module)">Options</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Parse' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Parse.html" title="CSVDecision::Parse (module)">Parse</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Result' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Result.html" title="CSVDecision::Result (class)">Result</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::ScanRow' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/ScanRow.html" title="CSVDecision::ScanRow (class)">ScanRow</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Table' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Table.html" title="CSVDecision::Table (class)">Table</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::TableValidationError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/TableValidationError.html" title="CSVDecision::TableValidationError (class)">TableValidationError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Validate' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Validate.html" title="CSVDecision::Validate (module)">Validate</a></span><small class='search_info'>CSVDecision</small></div></li></ul></li>
46
+ <li id='object_CSVDecision' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision.html" title="CSVDecision (module)">CSVDecision</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_CSVDecision::CellValidationError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/CellValidationError.html" title="CSVDecision::CellValidationError (class)">CellValidationError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Columns' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Columns.html" title="CSVDecision::Columns (class)">Columns</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Columns::Dictionary' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Columns/Dictionary.html" title="CSVDecision::Columns::Dictionary (class)">Dictionary</a></span> &lt; Object<small class='search_info'>CSVDecision::Columns</small></div></li></ul></li><li id='object_CSVDecision::Data' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Data.html" title="CSVDecision::Data (module)">Data</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Decision' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Decision.html" title="CSVDecision::Decision (class)">Decision</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Defaults' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Defaults.html" title="CSVDecision::Defaults (module)">Defaults</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Dictionary' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Dictionary.html" title="CSVDecision::Dictionary (module)">Dictionary</a></span><small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Dictionary::Entry' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Dictionary/Entry.html" title="CSVDecision::Dictionary::Entry (class)">Entry</a></span> &lt; Object<small class='search_info'>CSVDecision::Dictionary</small></div></li></ul></li><li id='object_CSVDecision::Error' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Error.html" title="CSVDecision::Error (class)">Error</a></span> &lt; StandardError<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::FileError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/FileError.html" title="CSVDecision::FileError (class)">FileError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Header' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Header.html" title="CSVDecision::Header (module)">Header</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Index' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Index.html" title="CSVDecision::Index (class)">Index</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Input' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Input.html" title="CSVDecision::Input (module)">Input</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Load' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Load.html" title="CSVDecision::Load (module)">Load</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Matchers' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Matchers.html" title="CSVDecision::Matchers (class)">Matchers</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Matchers::Constant' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Constant.html" title="CSVDecision::Matchers::Constant (class)">Constant</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Function' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Function.html" title="CSVDecision::Matchers::Function (class)">Function</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Guard' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Guard.html" title="CSVDecision::Matchers::Guard (class)">Guard</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Matcher' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Matcher.html" title="CSVDecision::Matchers::Matcher (class)">Matcher</a></span> &lt; Object<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Numeric' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Numeric.html" title="CSVDecision::Matchers::Numeric (class)">Numeric</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Pattern' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Pattern.html" title="CSVDecision::Matchers::Pattern (class)">Pattern</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Proc' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Proc.html" title="CSVDecision::Matchers::Proc (class)">Proc</a></span> &lt; Array<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Range' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Range.html" title="CSVDecision::Matchers::Range (class)">Range</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li><li id='object_CSVDecision::Matchers::Symbol' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Matchers/Symbol.html" title="CSVDecision::Matchers::Symbol (class)">Symbol</a></span> &lt; Matcher<small class='search_info'>CSVDecision::Matchers</small></div></li></ul></li><li id='object_CSVDecision::Options' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Options.html" title="CSVDecision::Options (module)">Options</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Parse' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Parse.html" title="CSVDecision::Parse (module)">Parse</a></span><small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Paths' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Paths.html" title="CSVDecision::Paths (class)">Paths</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Result' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Result.html" title="CSVDecision::Result (class)">Result</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Scan' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="CSVDecision/Scan.html" title="CSVDecision::Scan (class)">Scan</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div><ul><li id='object_CSVDecision::Scan::InputHashes' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="CSVDecision/Scan/InputHashes.html" title="CSVDecision::Scan::InputHashes (class)">InputHashes</a></span> &lt; Object<small class='search_info'>CSVDecision::Scan</small></div></li></ul></li><li id='object_CSVDecision::ScanRow' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/ScanRow.html" title="CSVDecision::ScanRow (class)">ScanRow</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Table' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Table.html" title="CSVDecision::Table (class)">Table</a></span> &lt; Object<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::TableValidationError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/TableValidationError.html" title="CSVDecision::TableValidationError (class)">TableValidationError</a></span> &lt; Error<small class='search_info'>CSVDecision</small></div></li><li id='object_CSVDecision::Validate' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="CSVDecision/Validate.html" title="CSVDecision::Validate (module)">Validate</a></span><small class='search_info'>CSVDecision</small></div></li></ul></li>
47
47
 
48
48
  </ul>
49
49
  </div>
@@ -86,10 +86,9 @@ input hash, producing a decision as an output hash.</p>
86
86
 
87
87
  <p>Typical “business logic” is notoriously illogical - full of corner cases
88
88
  and one-off exceptions. A decision table can express data-based decisions
89
- in a way that comes more naturally to subject matter experts, who typically
90
- prefer spreadsheet models. Business logic may then be encapsulated,
91
- avoiding the need to write tortuous conditional expressions in Ruby that
92
- draw the ire of <code>rubocop</code> and its ilk.</p>
89
+ in a way that comes naturally to subject matter experts, who typically use
90
+ spreadsheet models. Business logic can be encapsulated in a table, avoiding
91
+ the need for tortuous conditional expressions.</p>
93
92
 
94
93
  <p>This gem and the examples below take inspiration from <a
95
94
  href="https://github.com/jmettraux/rufus-decision">rufus/decision</a>.
@@ -125,9 +124,8 @@ politics | | Henry
125
124
  | | Zach</code></pre>
126
125
 
127
126
  <p>When the topic is <code>finance</code> and the region is
128
- <code>Europe</code> the team member <code>Donald</code> is selected.</p>
129
-
130
- <p>This is a “first match” decision table in that as soon as a match is made
127
+ <code>Europe</code> the team member <code>Donald</code> is selected. This
128
+ is a “first match” decision table in that as soon as a match is made
131
129
  execution stops and a single output row (hash) is returned.</p>
132
130
 
133
131
  <p>The ordering of rows matters. <code>Ernest</code>, who is in charge of
@@ -137,7 +135,7 @@ colleagues <code>Charlie</code> and <code>Donald</code>. <code>Zach</code>
137
135
  has been placed last, catching all the input combos not matching any other
138
136
  row.</p>
139
137
 
140
- <p>Here is the example as code:</p>
138
+ <p>Here&#39;s the example as code:</p>
141
139
 
142
140
  <p>“`ruby # Valid CSV string data = &lt;&lt;~DATA in :topic, in :region,
143
141
  out :team_member sports, Europe, Alice sports, , Bob finance, America,
@@ -152,7 +150,7 @@ region: nil) #=&gt; { team_member: &#39;Bob&#39; } table.decide(topic:
152
150
  &#39;culture&#39;, region: &#39;America&#39;) #=&gt; { team_member:
153
151
  &#39;Zach&#39; } “`</p>
154
152
 
155
- <p>An empty <code>in:</code> cell means “matches any value”, even nils.</p>
153
+ <p>An empty <code>in:</code> cell means “matches any value”.</p>
156
154
 
157
155
  <p>Note that all column header names are symbolized, so it&#39;s actually more
158
156
  accurate to write <code>in :topic</code>; however spaces before and after
@@ -181,39 +179,33 @@ Complete documentation of all table parameters is in the code - see
181
179
  <h3 id="label-CSV+Decision+features">CSV Decision features</h3>
182
180
  <ul><li>
183
181
  <p>Either returns the first matching row as a hash (default), or accumulates
184
- all matches as an array of hashes (i.e., <code>parse</code> option
185
- <code>first_match: false</code> or CSV file option
182
+ all matches as an array of hashes (i.e., <code>parse</code> option
183
+ <code>first_match: false</code> or CSV file option
186
184
  <code>accumulate</code>).</p>
187
185
  </li><li>
188
186
  <p>Fast decision-time performance (see <code>benchmarks</code> folder).
189
- Automatically indexes all text-only columns that do not contain any empty
190
- strings.</p>
187
+ Automatically indexes all constants-only columns that do not contain any
188
+ empty strings.</p>
191
189
  </li><li>
192
- <p>In addition to simple strings, <code>csv_decision</code> can match basic
193
- Ruby constants (e.g., <code>=nil</code>), regular expressions (e.g.,
194
- <code>=~ on|off</code>), comparisons (e.g., <code>&gt; 100.0</code> ) and
195
- Ruby-style ranges (e.g., <code>1..10</code>)</p>
190
+ <p>In addition to strings, can match basic Ruby constants (e.g.,
191
+ <code>=nil</code>), regular expressions (e.g., <code>=~ on|off</code>),
192
+ comparisons (e.g., <code>&gt; 100.0</code> ) and Ruby-style ranges (e.g.,
193
+ <code>1..10</code>)</p>
196
194
  </li><li>
197
195
  <p>Can compare an input column versus another input hash key - e.g.,
198
196
  <code>&gt; :column</code>.</p>
199
197
  </li><li>
200
198
  <p>Any cell starting with <code>#</code> is treated as a comment, and comments
201
- may appear anywhere in the table. (Comment cells are always interpreted as
202
- the empty string.)</p>
199
+ may appear anywhere in the table.</p>
203
200
  </li><li>
204
- <p>Can use column symbol expressions or Ruby methods (0-arity) in input
201
+ <p>Column symbol expressions or Ruby methods (0-arity) may be used in input
205
202
  columns for matching - e.g., <code>:column.zero?</code> or <code>:column
206
203
  == 0</code>.</p>
207
204
  </li><li>
208
205
  <p>May also use Ruby methods in output columns - e.g.,
209
206
  <code>:column.length</code>.</p>
210
207
  </li><li>
211
- <p>Accepts data as a file, CSV string or an array of arrays. (For safety all
212
- input data is force encoded to UTF-8, and non-ascii strings are converted
213
- to empty strings.)</p>
214
- </li><li>
215
- <p>All CSV cells are parsed for correctness, and helpful error messages
216
- generated for bad input.</p>
208
+ <p>Accepts data as a file, CSV string or an array of arrays.</p>
217
209
  </li></ul>
218
210
 
219
211
  <h4 id="label-Constants+other+than+strings">Constants other than strings</h4>
@@ -263,7 +255,9 @@ the input hash. The expression, <code>== :node</code> should be read as
263
255
  operators are also supported: <code>!=</code>, <code>&gt;</code>,
264
256
  <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code>. In addition, you
265
257
  can also apply a Ruby 0-arity method - e.g., <code>.present?</code> or
266
- <code>.nil?</code>. Negation is also supported - e.g., <code>!.nil?</code>.</p>
258
+ <code>.nil?</code>. Negation is also supported - e.g., <code>!.nil?</code>.
259
+ Note that <code>.nil?</code> can also be written as <code>:= nil?</code>,
260
+ and <code>!.nil?</code> as <code>:= !nil?</code>, depending on preference.</p>
267
261
 
268
262
  <p>For more simple examples see
269
263
  <code>spec/csv_decision/examples_spec.rb</code>.</p>
@@ -347,6 +341,34 @@ three variations: <code>set</code> (unconditional default)
347
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}
348
342
  </span></code></pre>
349
343
 
344
+ <h4 id="label-Input+path+columns">Input <code>path</code> columns</h4>
345
+
346
+ <p>For hashes that contain sub-hashes, it&#39;s possible to specify a path for
347
+ the purposes of matching. (Arrays are currently not supported.)</p>
348
+
349
+ <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>
350
+ <span class='tstring_content'> path:, path:, out :value
351
+ </span><span class='tstring_content'> header, , :source_name
352
+ </span><span class='tstring_content'> header, metrics, :service_name
353
+ </span><span class='tstring_content'> payload, , :amount
354
+ </span><span class='tstring_content'> payload, ref_data, :account_id
355
+ </span><span class='heredoc_end'>DATA
356
+ </span><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='comma'>,</span> <span class='label'>first_match:</span> <span class='kw'>false</span><span class='rparen'>)</span>
357
+
358
+ <span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='lbrace'>{</span>
359
+ <span class='label'>header:</span> <span class='lbrace'>{</span>
360
+ <span class='label'>id:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>type_cd:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BUY</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>source_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Client</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>AAPL</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
361
+ <span class='label'>metrics:</span> <span class='lbrace'>{</span> <span class='label'>service_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Trading</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>receive_time:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>12:00</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
362
+ <span class='rbrace'>}</span><span class='comma'>,</span>
363
+ <span class='label'>payload:</span> <span class='lbrace'>{</span>
364
+ <span class='label'>tran_id:</span> <span class='int'>9</span><span class='comma'>,</span> <span class='label'>amount:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>100.00</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
365
+ <span class='label'>ref_data:</span> <span class='lbrace'>{</span> <span class='label'>account_id:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>5010</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>type_id:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BUYL</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
366
+ <span class='rbrace'>}</span>
367
+ <span class='rbrace'>}</span>
368
+
369
+ <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='id identifier rubyid_input'>input</span><span class='rparen'>)</span> <span class='comment'>#=&gt; { value: %w[Client Trading 100.00 5010] }
370
+ </span></code></pre>
371
+
350
372
  <h3 id="label-Testing">Testing</h3>
351
373
 
352
374
  <p><code>csv_decision</code> includes thorough <a
@@ -389,7 +411,7 @@ href="./LICENSE">LICENSE</a> document for more information.</p>
389
411
  </div></div>
390
412
 
391
413
  <div id="footer">
392
- Generated on Sun Jan 28 14:41:48 2018 by
414
+ Generated on Sun Feb 11 10:26:07 2018 by
393
415
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
394
416
  0.9.12 (ruby-2.4.0).
395
417
  </div>
@@ -86,10 +86,9 @@ input hash, producing a decision as an output hash.</p>
86
86
 
87
87
  <p>Typical “business logic” is notoriously illogical - full of corner cases
88
88
  and one-off exceptions. A decision table can express data-based decisions
89
- in a way that comes more naturally to subject matter experts, who typically
90
- prefer spreadsheet models. Business logic may then be encapsulated,
91
- avoiding the need to write tortuous conditional expressions in Ruby that
92
- draw the ire of <code>rubocop</code> and its ilk.</p>
89
+ in a way that comes naturally to subject matter experts, who typically use
90
+ spreadsheet models. Business logic can be encapsulated in a table, avoiding
91
+ the need for tortuous conditional expressions.</p>
93
92
 
94
93
  <p>This gem and the examples below take inspiration from <a
95
94
  href="https://github.com/jmettraux/rufus-decision">rufus/decision</a>.
@@ -125,9 +124,8 @@ politics | | Henry
125
124
  | | Zach</code></pre>
126
125
 
127
126
  <p>When the topic is <code>finance</code> and the region is
128
- <code>Europe</code> the team member <code>Donald</code> is selected.</p>
129
-
130
- <p>This is a “first match” decision table in that as soon as a match is made
127
+ <code>Europe</code> the team member <code>Donald</code> is selected. This
128
+ is a “first match” decision table in that as soon as a match is made
131
129
  execution stops and a single output row (hash) is returned.</p>
132
130
 
133
131
  <p>The ordering of rows matters. <code>Ernest</code>, who is in charge of
@@ -137,7 +135,7 @@ colleagues <code>Charlie</code> and <code>Donald</code>. <code>Zach</code>
137
135
  has been placed last, catching all the input combos not matching any other
138
136
  row.</p>
139
137
 
140
- <p>Here is the example as code:</p>
138
+ <p>Here&#39;s the example as code:</p>
141
139
 
142
140
  <p>“`ruby # Valid CSV string data = &lt;&lt;~DATA in :topic, in :region,
143
141
  out :team_member sports, Europe, Alice sports, , Bob finance, America,
@@ -152,7 +150,7 @@ region: nil) #=&gt; { team_member: &#39;Bob&#39; } table.decide(topic:
152
150
  &#39;culture&#39;, region: &#39;America&#39;) #=&gt; { team_member:
153
151
  &#39;Zach&#39; } “`</p>
154
152
 
155
- <p>An empty <code>in:</code> cell means “matches any value”, even nils.</p>
153
+ <p>An empty <code>in:</code> cell means “matches any value”.</p>
156
154
 
157
155
  <p>Note that all column header names are symbolized, so it&#39;s actually more
158
156
  accurate to write <code>in :topic</code>; however spaces before and after
@@ -181,39 +179,33 @@ Complete documentation of all table parameters is in the code - see
181
179
  <h3 id="label-CSV+Decision+features">CSV Decision features</h3>
182
180
  <ul><li>
183
181
  <p>Either returns the first matching row as a hash (default), or accumulates
184
- all matches as an array of hashes (i.e., <code>parse</code> option
185
- <code>first_match: false</code> or CSV file option
182
+ all matches as an array of hashes (i.e., <code>parse</code> option
183
+ <code>first_match: false</code> or CSV file option
186
184
  <code>accumulate</code>).</p>
187
185
  </li><li>
188
186
  <p>Fast decision-time performance (see <code>benchmarks</code> folder).
189
- Automatically indexes all text-only columns that do not contain any empty
190
- strings.</p>
187
+ Automatically indexes all constants-only columns that do not contain any
188
+ empty strings.</p>
191
189
  </li><li>
192
- <p>In addition to simple strings, <code>csv_decision</code> can match basic
193
- Ruby constants (e.g., <code>=nil</code>), regular expressions (e.g.,
194
- <code>=~ on|off</code>), comparisons (e.g., <code>&gt; 100.0</code> ) and
195
- Ruby-style ranges (e.g., <code>1..10</code>)</p>
190
+ <p>In addition to strings, can match basic Ruby constants (e.g.,
191
+ <code>=nil</code>), regular expressions (e.g., <code>=~ on|off</code>),
192
+ comparisons (e.g., <code>&gt; 100.0</code> ) and Ruby-style ranges (e.g.,
193
+ <code>1..10</code>)</p>
196
194
  </li><li>
197
195
  <p>Can compare an input column versus another input hash key - e.g.,
198
196
  <code>&gt; :column</code>.</p>
199
197
  </li><li>
200
198
  <p>Any cell starting with <code>#</code> is treated as a comment, and comments
201
- may appear anywhere in the table. (Comment cells are always interpreted as
202
- the empty string.)</p>
199
+ may appear anywhere in the table.</p>
203
200
  </li><li>
204
- <p>Can use column symbol expressions or Ruby methods (0-arity) in input
201
+ <p>Column symbol expressions or Ruby methods (0-arity) may be used in input
205
202
  columns for matching - e.g., <code>:column.zero?</code> or <code>:column
206
203
  == 0</code>.</p>
207
204
  </li><li>
208
205
  <p>May also use Ruby methods in output columns - e.g.,
209
206
  <code>:column.length</code>.</p>
210
207
  </li><li>
211
- <p>Accepts data as a file, CSV string or an array of arrays. (For safety all
212
- input data is force encoded to UTF-8, and non-ascii strings are converted
213
- to empty strings.)</p>
214
- </li><li>
215
- <p>All CSV cells are parsed for correctness, and helpful error messages
216
- generated for bad input.</p>
208
+ <p>Accepts data as a file, CSV string or an array of arrays.</p>
217
209
  </li></ul>
218
210
 
219
211
  <h4 id="label-Constants+other+than+strings">Constants other than strings</h4>
@@ -263,7 +255,9 @@ the input hash. The expression, <code>== :node</code> should be read as
263
255
  operators are also supported: <code>!=</code>, <code>&gt;</code>,
264
256
  <code>&gt;=</code>, <code>&lt;</code>, <code>&lt;=</code>. In addition, you
265
257
  can also apply a Ruby 0-arity method - e.g., <code>.present?</code> or
266
- <code>.nil?</code>. Negation is also supported - e.g., <code>!.nil?</code>.</p>
258
+ <code>.nil?</code>. Negation is also supported - e.g., <code>!.nil?</code>.
259
+ Note that <code>.nil?</code> can also be written as <code>:= nil?</code>,
260
+ and <code>!.nil?</code> as <code>:= !nil?</code>, depending on preference.</p>
267
261
 
268
262
  <p>For more simple examples see
269
263
  <code>spec/csv_decision/examples_spec.rb</code>.</p>
@@ -347,6 +341,34 @@ three variations: <code>set</code> (unconditional default)
347
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}
348
342
  </span></code></pre>
349
343
 
344
+ <h4 id="label-Input+path+columns">Input <code>path</code> columns</h4>
345
+
346
+ <p>For hashes that contain sub-hashes, it&#39;s possible to specify a path for
347
+ the purposes of matching. (Arrays are currently not supported.)</p>
348
+
349
+ <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>
350
+ <span class='tstring_content'> path:, path:, out :value
351
+ </span><span class='tstring_content'> header, , :source_name
352
+ </span><span class='tstring_content'> header, metrics, :service_name
353
+ </span><span class='tstring_content'> payload, , :amount
354
+ </span><span class='tstring_content'> payload, ref_data, :account_id
355
+ </span><span class='heredoc_end'>DATA
356
+ </span><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='comma'>,</span> <span class='label'>first_match:</span> <span class='kw'>false</span><span class='rparen'>)</span>
357
+
358
+ <span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='lbrace'>{</span>
359
+ <span class='label'>header:</span> <span class='lbrace'>{</span>
360
+ <span class='label'>id:</span> <span class='int'>1</span><span class='comma'>,</span> <span class='label'>type_cd:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BUY</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>source_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Client</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>client_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>AAPL</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
361
+ <span class='label'>metrics:</span> <span class='lbrace'>{</span> <span class='label'>service_name:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Trading</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>receive_time:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>12:00</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
362
+ <span class='rbrace'>}</span><span class='comma'>,</span>
363
+ <span class='label'>payload:</span> <span class='lbrace'>{</span>
364
+ <span class='label'>tran_id:</span> <span class='int'>9</span><span class='comma'>,</span> <span class='label'>amount:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>100.00</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
365
+ <span class='label'>ref_data:</span> <span class='lbrace'>{</span> <span class='label'>account_id:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>5010</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>type_id:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>BUYL</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
366
+ <span class='rbrace'>}</span>
367
+ <span class='rbrace'>}</span>
368
+
369
+ <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='id identifier rubyid_input'>input</span><span class='rparen'>)</span> <span class='comment'>#=&gt; { value: %w[Client Trading 100.00 5010] }
370
+ </span></code></pre>
371
+
350
372
  <h3 id="label-Testing">Testing</h3>
351
373
 
352
374
  <p><code>csv_decision</code> includes thorough <a
@@ -389,7 +411,7 @@ href="./LICENSE">LICENSE</a> document for more information.</p>
389
411
  </div></div>
390
412
 
391
413
  <div id="footer">
392
- Generated on Sun Jan 28 14:41:47 2018 by
414
+ Generated on Sun Feb 11 10:26:06 2018 by
393
415
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
394
416
  0.9.12 (ruby-2.4.0).
395
417
  </div>
@@ -78,16 +78,16 @@
78
78
 
79
79
  <li class="odd ">
80
80
  <div class="item">
81
- <span class='object_link'><a href="CSVDecision/Dictionary.html#build-class_method" title="CSVDecision::Dictionary.build (method)">build</a></span>
82
- <small>CSVDecision::Dictionary</small>
81
+ <span class='object_link'><a href="CSVDecision/Index.html#build-class_method" title="CSVDecision::Index.build (method)">build</a></span>
82
+ <small>CSVDecision::Index</small>
83
83
  </div>
84
84
  </li>
85
85
 
86
86
 
87
87
  <li class="even ">
88
88
  <div class="item">
89
- <span class='object_link'><a href="CSVDecision/Index.html#build-class_method" title="CSVDecision::Index.build (method)">build</a></span>
90
- <small>CSVDecision::Index</small>
89
+ <span class='object_link'><a href="CSVDecision/Dictionary.html#build-class_method" title="CSVDecision::Dictionary.build (method)">build</a></span>
90
+ <small>CSVDecision::Dictionary</small>
91
91
  </div>
92
92
  </li>
93
93
 
@@ -117,6 +117,14 @@
117
117
 
118
118
 
119
119
  <li class="even ">
120
+ <div class="item">
121
+ <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#columns-instance_method" title="CSVDecision::Columns::Dictionary#columns (method)">#columns</a></span>
122
+ <small>CSVDecision::Columns::Dictionary</small>
123
+ </div>
124
+ </li>
125
+
126
+
127
+ <li class="odd ">
120
128
  <div class="item">
121
129
  <span class='object_link'><a href="CSVDecision/Table.html#columns-instance_method" title="CSVDecision::Table#columns (method)">#columns</a></span>
122
130
  <small>CSVDecision::Table</small>
@@ -124,7 +132,7 @@
124
132
  </li>
125
133
 
126
134
 
127
- <li class="odd ">
135
+ <li class="even ">
128
136
  <div class="item">
129
137
  <span class='object_link'><a href="CSVDecision/Index.html#columns-instance_method" title="CSVDecision::Index#columns (method)">#columns</a></span>
130
138
  <small>CSVDecision::Index</small>
@@ -132,15 +140,15 @@
132
140
  </li>
133
141
 
134
142
 
135
- <li class="even ">
143
+ <li class="odd ">
136
144
  <div class="item">
137
- <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#columns-instance_method" title="CSVDecision::Columns::Dictionary#columns (method)">#columns</a></span>
138
- <small>CSVDecision::Columns::Dictionary</small>
145
+ <span class='object_link'><a href="CSVDecision/Matchers.html#compare%3F-class_method" title="CSVDecision::Matchers.compare? (method)">compare?</a></span>
146
+ <small>CSVDecision::Matchers</small>
139
147
  </div>
140
148
  </li>
141
149
 
142
150
 
143
- <li class="odd ">
151
+ <li class="even ">
144
152
  <div class="item">
145
153
  <span class='object_link'><a href="CSVDecision/ScanRow.html#constants-instance_method" title="CSVDecision::ScanRow#constants (method)">#constants</a></span>
146
154
  <small>CSVDecision::ScanRow</small>
@@ -148,7 +156,7 @@
148
156
  </li>
149
157
 
150
158
 
151
- <li class="even ">
159
+ <li class="odd ">
152
160
  <div class="item">
153
161
  <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#create-class_method" title="CSVDecision::Dictionary::Entry.create (method)">create</a></span>
154
162
  <small>CSVDecision::Dictionary::Entry</small>
@@ -156,6 +164,14 @@
156
164
  </li>
157
165
 
158
166
 
167
+ <li class="even ">
168
+ <div class="item">
169
+ <span class='object_link'><a href="CSVDecision/Scan/InputHashes.html#data-instance_method" title="CSVDecision::Scan::InputHashes#data (method)">#data</a></span>
170
+ <small>CSVDecision::Scan::InputHashes</small>
171
+ </div>
172
+ </li>
173
+
174
+
159
175
  <li class="odd ">
160
176
  <div class="item">
161
177
  <span class='object_link'><a href="CSVDecision/Table.html#decide-instance_method" title="CSVDecision::Table#decide (method)">#decide</a></span>
@@ -254,16 +270,16 @@
254
270
 
255
271
  <li class="odd ">
256
272
  <div class="item">
257
- <span class='object_link'><a href="CSVDecision/Options.html#from_csv-class_method" title="CSVDecision::Options.from_csv (method)">from_csv</a></span>
258
- <small>CSVDecision::Options</small>
273
+ <span class='object_link'><a href="CSVDecision/Decision.html#first_match-instance_method" title="CSVDecision::Decision#first_match (method)">#first_match</a></span>
274
+ <small>CSVDecision::Decision</small>
259
275
  </div>
260
276
  </li>
261
277
 
262
278
 
263
279
  <li class="even ">
264
280
  <div class="item">
265
- <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#function-instance_method" title="CSVDecision::Dictionary::Entry#function (method)">#function</a></span>
266
- <small>CSVDecision::Dictionary::Entry</small>
281
+ <span class='object_link'><a href="CSVDecision/Options.html#from_csv-class_method" title="CSVDecision::Options.from_csv (method)">from_csv</a></span>
282
+ <small>CSVDecision::Options</small>
267
283
  </div>
268
284
  </li>
269
285
 
@@ -277,6 +293,14 @@
277
293
 
278
294
 
279
295
  <li class="even ">
296
+ <div class="item">
297
+ <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#function-instance_method" title="CSVDecision::Dictionary::Entry#function (method)">#function</a></span>
298
+ <small>CSVDecision::Dictionary::Entry</small>
299
+ </div>
300
+ </li>
301
+
302
+
303
+ <li class="odd ">
280
304
  <div class="item">
281
305
  <span class='object_link'><a href="CSVDecision/Index.html#hash-instance_method" title="CSVDecision::Index#hash (method)">#hash</a></span>
282
306
  <small>CSVDecision::Index</small>
@@ -284,7 +308,7 @@
284
308
  </li>
285
309
 
286
310
 
287
- <li class="odd ">
311
+ <li class="even ">
288
312
  <div class="item">
289
313
  <span class='object_link'><a href="CSVDecision/Table.html#if_rows-instance_method" title="CSVDecision::Table#if_rows (method)">#if_rows</a></span>
290
314
  <small>CSVDecision::Table</small>
@@ -292,7 +316,7 @@
292
316
  </li>
293
317
 
294
318
 
295
- <li class="even ">
319
+ <li class="odd ">
296
320
  <div class="item">
297
321
  <span class='object_link'><a href="CSVDecision/Columns.html#ifs-instance_method" title="CSVDecision::Columns#ifs (method)">#ifs</a></span>
298
322
  <small>CSVDecision::Columns</small>
@@ -300,7 +324,7 @@
300
324
  </li>
301
325
 
302
326
 
303
- <li class="odd ">
327
+ <li class="even ">
304
328
  <div class="item">
305
329
  <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#ifs-instance_method" title="CSVDecision::Columns::Dictionary#ifs (method)">#ifs</a></span>
306
330
  <small>CSVDecision::Columns::Dictionary</small>
@@ -308,7 +332,7 @@
308
332
  </li>
309
333
 
310
334
 
311
- <li class="even ">
335
+ <li class="odd ">
312
336
  <div class="item">
313
337
  <span class='object_link'><a href="CSVDecision/Table.html#index-instance_method" title="CSVDecision::Table#index (method)">#index</a></span>
314
338
  <small>CSVDecision::Table</small>
@@ -316,9 +340,17 @@
316
340
  </li>
317
341
 
318
342
 
343
+ <li class="even ">
344
+ <div class="item">
345
+ <span class='object_link'><a href="CSVDecision/Decision.html#index_scan_accumulate-instance_method" title="CSVDecision::Decision#index_scan_accumulate (method)">#index_scan_accumulate</a></span>
346
+ <small>CSVDecision::Decision</small>
347
+ </div>
348
+ </li>
349
+
350
+
319
351
  <li class="odd ">
320
352
  <div class="item">
321
- <span class='object_link'><a href="CSVDecision/Decision.html#index_scan-instance_method" title="CSVDecision::Decision#index_scan (method)">#index_scan</a></span>
353
+ <span class='object_link'><a href="CSVDecision/Decision.html#index_scan_first_match-instance_method" title="CSVDecision::Decision#index_scan_first_match (method)">#index_scan_first_match</a></span>
322
354
  <small>CSVDecision::Decision</small>
323
355
  </div>
324
356
  </li>
@@ -334,24 +366,24 @@
334
366
 
335
367
  <li class="odd ">
336
368
  <div class="item">
337
- <span class='object_link'><a href="CSVDecision/Columns.html#initialize-instance_method" title="CSVDecision::Columns#initialize (method)">#initialize</a></span>
338
- <small>CSVDecision::Columns</small>
369
+ <span class='object_link'><a href="CSVDecision/Table.html#initialize-instance_method" title="CSVDecision::Table#initialize (method)">#initialize</a></span>
370
+ <small>CSVDecision::Table</small>
339
371
  </div>
340
372
  </li>
341
373
 
342
374
 
343
375
  <li class="even ">
344
376
  <div class="item">
345
- <span class='object_link'><a href="CSVDecision/ScanRow.html#initialize-instance_method" title="CSVDecision::ScanRow#initialize (method)">#initialize</a></span>
346
- <small>CSVDecision::ScanRow</small>
377
+ <span class='object_link'><a href="CSVDecision/Columns.html#initialize-instance_method" title="CSVDecision::Columns#initialize (method)">#initialize</a></span>
378
+ <small>CSVDecision::Columns</small>
347
379
  </div>
348
380
  </li>
349
381
 
350
382
 
351
383
  <li class="odd ">
352
384
  <div class="item">
353
- <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#initialize-instance_method" title="CSVDecision::Dictionary::Entry#initialize (method)">#initialize</a></span>
354
- <small>CSVDecision::Dictionary::Entry</small>
385
+ <span class='object_link'><a href="CSVDecision/Matchers/Function.html#initialize-instance_method" title="CSVDecision::Matchers::Function#initialize (method)">#initialize</a></span>
386
+ <small>CSVDecision::Matchers::Function</small>
355
387
  </div>
356
388
  </li>
357
389
 
@@ -366,8 +398,8 @@
366
398
 
367
399
  <li class="odd ">
368
400
  <div class="item">
369
- <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#initialize-instance_method" title="CSVDecision::Columns::Dictionary#initialize (method)">#initialize</a></span>
370
- <small>CSVDecision::Columns::Dictionary</small>
401
+ <span class='object_link'><a href="CSVDecision/Matchers/Proc.html#initialize-instance_method" title="CSVDecision::Matchers::Proc#initialize (method)">#initialize</a></span>
402
+ <small>CSVDecision::Matchers::Proc</small>
371
403
  </div>
372
404
  </li>
373
405
 
@@ -382,40 +414,40 @@
382
414
 
383
415
  <li class="odd ">
384
416
  <div class="item">
385
- <span class='object_link'><a href="CSVDecision/Matchers/Pattern.html#initialize-instance_method" title="CSVDecision::Matchers::Pattern#initialize (method)">#initialize</a></span>
386
- <small>CSVDecision::Matchers::Pattern</small>
417
+ <span class='object_link'><a href="CSVDecision/Result.html#initialize-instance_method" title="CSVDecision::Result#initialize (method)">#initialize</a></span>
418
+ <small>CSVDecision::Result</small>
387
419
  </div>
388
420
  </li>
389
421
 
390
422
 
391
423
  <li class="even ">
392
424
  <div class="item">
393
- <span class='object_link'><a href="CSVDecision/Result.html#initialize-instance_method" title="CSVDecision::Result#initialize (method)">#initialize</a></span>
394
- <small>CSVDecision::Result</small>
425
+ <span class='object_link'><a href="CSVDecision/Paths.html#initialize-instance_method" title="CSVDecision::Paths#initialize (method)">#initialize</a></span>
426
+ <small>CSVDecision::Paths</small>
395
427
  </div>
396
428
  </li>
397
429
 
398
430
 
399
431
  <li class="odd ">
400
432
  <div class="item">
401
- <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#initialize-instance_method" title="CSVDecision::Matchers::Matcher#initialize (method)">#initialize</a></span>
402
- <small>CSVDecision::Matchers::Matcher</small>
433
+ <span class='object_link'><a href="CSVDecision/Matchers/Pattern.html#initialize-instance_method" title="CSVDecision::Matchers::Pattern#initialize (method)">#initialize</a></span>
434
+ <small>CSVDecision::Matchers::Pattern</small>
403
435
  </div>
404
436
  </li>
405
437
 
406
438
 
407
439
  <li class="even ">
408
440
  <div class="item">
409
- <span class='object_link'><a href="CSVDecision/Matchers/Proc.html#initialize-instance_method" title="CSVDecision::Matchers::Proc#initialize (method)">#initialize</a></span>
410
- <small>CSVDecision::Matchers::Proc</small>
441
+ <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#initialize-instance_method" title="CSVDecision::Matchers::Matcher#initialize (method)">#initialize</a></span>
442
+ <small>CSVDecision::Matchers::Matcher</small>
411
443
  </div>
412
444
  </li>
413
445
 
414
446
 
415
447
  <li class="odd ">
416
448
  <div class="item">
417
- <span class='object_link'><a href="CSVDecision/Table.html#initialize-instance_method" title="CSVDecision::Table#initialize (method)">#initialize</a></span>
418
- <small>CSVDecision::Table</small>
449
+ <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#initialize-instance_method" title="CSVDecision::Dictionary::Entry#initialize (method)">#initialize</a></span>
450
+ <small>CSVDecision::Dictionary::Entry</small>
419
451
  </div>
420
452
  </li>
421
453
 
@@ -430,8 +462,40 @@
430
462
 
431
463
  <li class="odd ">
432
464
  <div class="item">
433
- <span class='object_link'><a href="CSVDecision/Matchers/Function.html#initialize-instance_method" title="CSVDecision::Matchers::Function#initialize (method)">#initialize</a></span>
434
- <small>CSVDecision::Matchers::Function</small>
465
+ <span class='object_link'><a href="CSVDecision/ScanRow.html#initialize-instance_method" title="CSVDecision::ScanRow#initialize (method)">#initialize</a></span>
466
+ <small>CSVDecision::ScanRow</small>
467
+ </div>
468
+ </li>
469
+
470
+
471
+ <li class="even ">
472
+ <div class="item">
473
+ <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#initialize-instance_method" title="CSVDecision::Columns::Dictionary#initialize (method)">#initialize</a></span>
474
+ <small>CSVDecision::Columns::Dictionary</small>
475
+ </div>
476
+ </li>
477
+
478
+
479
+ <li class="odd ">
480
+ <div class="item">
481
+ <span class='object_link'><a href="CSVDecision/Scan/InputHashes.html#initialize-instance_method" title="CSVDecision::Scan::InputHashes#initialize (method)">#initialize</a></span>
482
+ <small>CSVDecision::Scan::InputHashes</small>
483
+ </div>
484
+ </li>
485
+
486
+
487
+ <li class="even ">
488
+ <div class="item">
489
+ <span class='object_link'><a href="CSVDecision/Decision.html#input-instance_method" title="CSVDecision::Decision#input (method)">#input</a></span>
490
+ <small>CSVDecision::Decision</small>
491
+ </div>
492
+ </li>
493
+
494
+
495
+ <li class="odd ">
496
+ <div class="item">
497
+ <span class='object_link'><a href="CSVDecision/Result.html#input-instance_method" title="CSVDecision::Result#input (method)">#input</a></span>
498
+ <small>CSVDecision::Result</small>
435
499
  </div>
436
500
  </li>
437
501
 
@@ -462,32 +526,32 @@
462
526
 
463
527
  <li class="odd ">
464
528
  <div class="item">
465
- <span class='object_link'><a href="CSVDecision/Matchers.html#ins-instance_method" title="CSVDecision::Matchers#ins (method)">#ins</a></span>
466
- <small>CSVDecision::Matchers</small>
529
+ <span class='object_link'><a href="CSVDecision/Columns.html#ins-instance_method" title="CSVDecision::Columns#ins (method)">#ins</a></span>
530
+ <small>CSVDecision::Columns</small>
467
531
  </div>
468
532
  </li>
469
533
 
470
534
 
471
535
  <li class="even ">
472
536
  <div class="item">
473
- <span class='object_link'><a href="CSVDecision/Columns.html#ins-instance_method" title="CSVDecision::Columns#ins (method)">#ins</a></span>
474
- <small>CSVDecision::Columns</small>
537
+ <span class='object_link'><a href="CSVDecision/Matchers.html#ins-instance_method" title="CSVDecision::Matchers#ins (method)">#ins</a></span>
538
+ <small>CSVDecision::Matchers</small>
475
539
  </div>
476
540
  </li>
477
541
 
478
542
 
479
543
  <li class="odd ">
480
544
  <div class="item">
481
- <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#ins%3F-instance_method" title="CSVDecision::Matchers::Matcher#ins? (method)">#ins?</a></span>
482
- <small>CSVDecision::Matchers::Matcher</small>
545
+ <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#ins%3F-instance_method" title="CSVDecision::Dictionary::Entry#ins? (method)">#ins?</a></span>
546
+ <small>CSVDecision::Dictionary::Entry</small>
483
547
  </div>
484
548
  </li>
485
549
 
486
550
 
487
551
  <li class="even ">
488
552
  <div class="item">
489
- <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#ins%3F-instance_method" title="CSVDecision::Dictionary::Entry#ins? (method)">#ins?</a></span>
490
- <small>CSVDecision::Dictionary::Entry</small>
553
+ <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#ins%3F-instance_method" title="CSVDecision::Matchers::Matcher#ins? (method)">#ins?</a></span>
554
+ <small>CSVDecision::Matchers::Matcher</small>
491
555
  </div>
492
556
  </li>
493
557
 
@@ -542,8 +606,8 @@
542
606
 
543
607
  <li class="odd ">
544
608
  <div class="item">
545
- <span class='object_link'><a href="CSVDecision/Matchers/Guard.html#matches%3F-class_method" title="CSVDecision::Matchers::Guard.matches? (method)">matches?</a></span>
546
- <small>CSVDecision::Matchers::Guard</small>
609
+ <span class='object_link'><a href="CSVDecision/Matchers/Range.html#matches%3F-class_method" title="CSVDecision::Matchers::Range.matches? (method)">matches?</a></span>
610
+ <small>CSVDecision::Matchers::Range</small>
547
611
  </div>
548
612
  </li>
549
613
 
@@ -558,23 +622,23 @@
558
622
 
559
623
  <li class="odd ">
560
624
  <div class="item">
561
- <span class='object_link'><a href="CSVDecision/Matchers/Range.html#matches%3F-class_method" title="CSVDecision::Matchers::Range.matches? (method)">matches?</a></span>
562
- <small>CSVDecision::Matchers::Range</small>
625
+ <span class='object_link'><a href="CSVDecision/Matchers/Guard.html#matches%3F-class_method" title="CSVDecision::Matchers::Guard.matches? (method)">matches?</a></span>
626
+ <small>CSVDecision::Matchers::Guard</small>
563
627
  </div>
564
628
  </li>
565
629
 
566
630
 
567
631
  <li class="even ">
568
632
  <div class="item">
569
- <span class='object_link'><a href="CSVDecision/Matchers/Range.html#matches%3F-instance_method" title="CSVDecision::Matchers::Range#matches? (method)">#matches?</a></span>
570
- <small>CSVDecision::Matchers::Range</small>
633
+ <span class='object_link'><a href="CSVDecision/Matchers/Symbol.html#matches%3F-class_method" title="CSVDecision::Matchers::Symbol.matches? (method)">matches?</a></span>
634
+ <small>CSVDecision::Matchers::Symbol</small>
571
635
  </div>
572
636
  </li>
573
637
 
574
638
 
575
639
  <li class="odd ">
576
640
  <div class="item">
577
- <span class='object_link'><a href="CSVDecision/Matchers/Symbol.html#matches%3F-class_method" title="CSVDecision::Matchers::Symbol.matches? (method)">matches?</a></span>
641
+ <span class='object_link'><a href="CSVDecision/Matchers/Symbol.html#matches%3F-instance_method" title="CSVDecision::Matchers::Symbol#matches? (method)">#matches?</a></span>
578
642
  <small>CSVDecision::Matchers::Symbol</small>
579
643
  </div>
580
644
  </li>
@@ -582,15 +646,15 @@
582
646
 
583
647
  <li class="even ">
584
648
  <div class="item">
585
- <span class='object_link'><a href="CSVDecision/Matchers/Symbol.html#matches%3F-instance_method" title="CSVDecision::Matchers::Symbol#matches? (method)">#matches?</a></span>
586
- <small>CSVDecision::Matchers::Symbol</small>
649
+ <span class='object_link'><a href="CSVDecision/Matchers/Numeric.html#matches%3F-class_method" title="CSVDecision::Matchers::Numeric.matches? (method)">matches?</a></span>
650
+ <small>CSVDecision::Matchers::Numeric</small>
587
651
  </div>
588
652
  </li>
589
653
 
590
654
 
591
655
  <li class="odd ">
592
656
  <div class="item">
593
- <span class='object_link'><a href="CSVDecision/Matchers/Numeric.html#matches%3F-class_method" title="CSVDecision::Matchers::Numeric.matches? (method)">matches?</a></span>
657
+ <span class='object_link'><a href="CSVDecision/Matchers/Numeric.html#matches%3F-instance_method" title="CSVDecision::Matchers::Numeric#matches? (method)">#matches?</a></span>
594
658
  <small>CSVDecision::Matchers::Numeric</small>
595
659
  </div>
596
660
  </li>
@@ -598,16 +662,16 @@
598
662
 
599
663
  <li class="even ">
600
664
  <div class="item">
601
- <span class='object_link'><a href="CSVDecision/Matchers/Numeric.html#matches%3F-instance_method" title="CSVDecision::Matchers::Numeric#matches? (method)">#matches?</a></span>
602
- <small>CSVDecision::Matchers::Numeric</small>
665
+ <span class='object_link'><a href="CSVDecision/Matchers/Pattern.html#matches%3F-class_method" title="CSVDecision::Matchers::Pattern.matches? (method)">matches?</a></span>
666
+ <small>CSVDecision::Matchers::Pattern</small>
603
667
  </div>
604
668
  </li>
605
669
 
606
670
 
607
671
  <li class="odd ">
608
672
  <div class="item">
609
- <span class='object_link'><a href="CSVDecision/Matchers/Pattern.html#matches%3F-class_method" title="CSVDecision::Matchers::Pattern.matches? (method)">matches?</a></span>
610
- <small>CSVDecision::Matchers::Pattern</small>
673
+ <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#matches%3F-instance_method" title="CSVDecision::Matchers::Matcher#matches? (method)">#matches?</a></span>
674
+ <small>CSVDecision::Matchers::Matcher</small>
611
675
  </div>
612
676
  </li>
613
677
 
@@ -622,23 +686,23 @@
622
686
 
623
687
  <li class="odd ">
624
688
  <div class="item">
625
- <span class='object_link'><a href="CSVDecision/Matchers/Constant.html#matches%3F-instance_method" title="CSVDecision::Matchers::Constant#matches? (method)">#matches?</a></span>
626
- <small>CSVDecision::Matchers::Constant</small>
689
+ <span class='object_link'><a href="CSVDecision/Matchers/Range.html#matches%3F-instance_method" title="CSVDecision::Matchers::Range#matches? (method)">#matches?</a></span>
690
+ <small>CSVDecision::Matchers::Range</small>
627
691
  </div>
628
692
  </li>
629
693
 
630
694
 
631
695
  <li class="even ">
632
696
  <div class="item">
633
- <span class='object_link'><a href="CSVDecision/Matchers/Function.html#matches%3F-class_method" title="CSVDecision::Matchers::Function.matches? (method)">matches?</a></span>
634
- <small>CSVDecision::Matchers::Function</small>
697
+ <span class='object_link'><a href="CSVDecision/Matchers/Constant.html#matches%3F-instance_method" title="CSVDecision::Matchers::Constant#matches? (method)">#matches?</a></span>
698
+ <small>CSVDecision::Matchers::Constant</small>
635
699
  </div>
636
700
  </li>
637
701
 
638
702
 
639
703
  <li class="odd ">
640
704
  <div class="item">
641
- <span class='object_link'><a href="CSVDecision/Matchers/Function.html#matches%3F-instance_method" title="CSVDecision::Matchers::Function#matches? (method)">#matches?</a></span>
705
+ <span class='object_link'><a href="CSVDecision/Matchers/Function.html#matches%3F-class_method" title="CSVDecision::Matchers::Function.matches? (method)">matches?</a></span>
642
706
  <small>CSVDecision::Matchers::Function</small>
643
707
  </div>
644
708
  </li>
@@ -646,8 +710,8 @@
646
710
 
647
711
  <li class="even ">
648
712
  <div class="item">
649
- <span class='object_link'><a href="CSVDecision/Matchers/Matcher.html#matches%3F-instance_method" title="CSVDecision::Matchers::Matcher#matches? (method)">#matches?</a></span>
650
- <small>CSVDecision::Matchers::Matcher</small>
713
+ <span class='object_link'><a href="CSVDecision/Matchers/Function.html#matches%3F-instance_method" title="CSVDecision::Matchers::Function#matches? (method)">#matches?</a></span>
714
+ <small>CSVDecision::Matchers::Function</small>
651
715
  </div>
652
716
  </li>
653
717
 
@@ -742,16 +806,16 @@
742
806
 
743
807
  <li class="even ">
744
808
  <div class="item">
745
- <span class='object_link'><a href="CSVDecision/Matchers/Guard.html#outs%3F-instance_method" title="CSVDecision::Matchers::Guard#outs? (method)">#outs?</a></span>
746
- <small>CSVDecision::Matchers::Guard</small>
809
+ <span class='object_link'><a href="CSVDecision/Matchers/Constant.html#outs%3F-instance_method" title="CSVDecision::Matchers::Constant#outs? (method)">#outs?</a></span>
810
+ <small>CSVDecision::Matchers::Constant</small>
747
811
  </div>
748
812
  </li>
749
813
 
750
814
 
751
815
  <li class="odd ">
752
816
  <div class="item">
753
- <span class='object_link'><a href="CSVDecision/Matchers/Constant.html#outs%3F-instance_method" title="CSVDecision::Matchers::Constant#outs? (method)">#outs?</a></span>
754
- <small>CSVDecision::Matchers::Constant</small>
817
+ <span class='object_link'><a href="CSVDecision/Matchers/Guard.html#outs%3F-instance_method" title="CSVDecision::Matchers::Guard#outs? (method)">#outs?</a></span>
818
+ <small>CSVDecision::Matchers::Guard</small>
755
819
  </div>
756
820
  </li>
757
821
 
@@ -774,16 +838,16 @@
774
838
 
775
839
  <li class="even ">
776
840
  <div class="item">
777
- <span class='object_link'><a href="CSVDecision/Result.html#outs_functions-instance_method" title="CSVDecision::Result#outs_functions (method)">#outs_functions</a></span>
778
- <small>CSVDecision::Result</small>
841
+ <span class='object_link'><a href="CSVDecision/Table.html#outs_functions-instance_method" title="CSVDecision::Table#outs_functions (method)">#outs_functions</a></span>
842
+ <small>CSVDecision::Table</small>
779
843
  </div>
780
844
  </li>
781
845
 
782
846
 
783
847
  <li class="odd ">
784
848
  <div class="item">
785
- <span class='object_link'><a href="CSVDecision/Table.html#outs_functions-instance_method" title="CSVDecision::Table#outs_functions (method)">#outs_functions</a></span>
786
- <small>CSVDecision::Table</small>
849
+ <span class='object_link'><a href="CSVDecision/Result.html#outs_functions-instance_method" title="CSVDecision::Result#outs_functions (method)">#outs_functions</a></span>
850
+ <small>CSVDecision::Result</small>
787
851
  </div>
788
852
  </li>
789
853
 
@@ -806,8 +870,8 @@
806
870
 
807
871
  <li class="even ">
808
872
  <div class="item">
809
- <span class='object_link'><a href="CSVDecision/Header.html#parse-class_method" title="CSVDecision::Header.parse (method)">parse</a></span>
810
- <small>CSVDecision::Header</small>
873
+ <span class='object_link'><a href="CSVDecision/Matchers.html#parse-class_method" title="CSVDecision::Matchers.parse (method)">parse</a></span>
874
+ <small>CSVDecision::Matchers</small>
811
875
  </div>
812
876
  </li>
813
877
 
@@ -822,8 +886,8 @@
822
886
 
823
887
  <li class="even ">
824
888
  <div class="item">
825
- <span class='object_link'><a href="CSVDecision/Matchers.html#parse-class_method" title="CSVDecision::Matchers.parse (method)">parse</a></span>
826
- <small>CSVDecision::Matchers</small>
889
+ <span class='object_link'><a href="CSVDecision/Header.html#parse-class_method" title="CSVDecision::Header.parse (method)">parse</a></span>
890
+ <small>CSVDecision::Header</small>
827
891
  </div>
828
892
  </li>
829
893
 
@@ -837,6 +901,14 @@
837
901
 
838
902
 
839
903
  <li class="even ">
904
+ <div class="item">
905
+ <span class='object_link'><a href="CSVDecision/Input.html#parse_data-class_method" title="CSVDecision::Input.parse_data (method)">parse_data</a></span>
906
+ <small>CSVDecision::Input</small>
907
+ </div>
908
+ </li>
909
+
910
+
911
+ <li class="odd ">
840
912
  <div class="item">
841
913
  <span class='object_link'><a href="CSVDecision/Matchers.html#parse_ins-instance_method" title="CSVDecision::Matchers#parse_ins (method)">#parse_ins</a></span>
842
914
  <small>CSVDecision::Matchers</small>
@@ -844,7 +916,7 @@
844
916
  </li>
845
917
 
846
918
 
847
- <li class="odd ">
919
+ <li class="even ">
848
920
  <div class="item">
849
921
  <span class='object_link'><a href="CSVDecision/Matchers.html#parse_outs-instance_method" title="CSVDecision::Matchers#parse_outs (method)">#parse_outs</a></span>
850
922
  <small>CSVDecision::Matchers</small>
@@ -852,7 +924,7 @@
852
924
  </li>
853
925
 
854
926
 
855
- <li class="even ">
927
+ <li class="odd ">
856
928
  <div class="item">
857
929
  <span class='object_link'><a href="CSVDecision/Load.html#path-class_method" title="CSVDecision::Load.path (method)">path</a></span>
858
930
  <small>CSVDecision::Load</small>
@@ -860,7 +932,39 @@
860
932
  </li>
861
933
 
862
934
 
935
+ <li class="even ">
936
+ <div class="item">
937
+ <span class='object_link'><a href="CSVDecision/Columns.html#paths-instance_method" title="CSVDecision::Columns#paths (method)">#paths</a></span>
938
+ <small>CSVDecision::Columns</small>
939
+ </div>
940
+ </li>
941
+
942
+
863
943
  <li class="odd ">
944
+ <div class="item">
945
+ <span class='object_link'><a href="CSVDecision/Columns/Dictionary.html#paths-instance_method" title="CSVDecision::Columns::Dictionary#paths (method)">#paths</a></span>
946
+ <small>CSVDecision::Columns::Dictionary</small>
947
+ </div>
948
+ </li>
949
+
950
+
951
+ <li class="even ">
952
+ <div class="item">
953
+ <span class='object_link'><a href="CSVDecision/Table.html#paths-instance_method" title="CSVDecision::Table#paths (method)">#paths</a></span>
954
+ <small>CSVDecision::Table</small>
955
+ </div>
956
+ </li>
957
+
958
+
959
+ <li class="odd ">
960
+ <div class="item">
961
+ <span class='object_link'><a href="CSVDecision/Paths.html#paths-instance_method" title="CSVDecision::Paths#paths (method)">#paths</a></span>
962
+ <small>CSVDecision::Paths</small>
963
+ </div>
964
+ </li>
965
+
966
+
967
+ <li class="even ">
864
968
  <div class="item">
865
969
  <span class='object_link'><a href="CSVDecision/ScanRow.html#procs-instance_method" title="CSVDecision::ScanRow#procs (method)">#procs</a></span>
866
970
  <small>CSVDecision::ScanRow</small>
@@ -868,7 +972,7 @@
868
972
  </li>
869
973
 
870
974
 
871
- <li class="even ">
975
+ <li class="odd ">
872
976
  <div class="item">
873
977
  <span class='object_link'><a href="CSVDecision/Matchers.html#regexp-class_method" title="CSVDecision::Matchers.regexp (method)">regexp</a></span>
874
978
  <small>CSVDecision::Matchers</small>
@@ -876,7 +980,7 @@
876
980
  </li>
877
981
 
878
982
 
879
- <li class="odd ">
983
+ <li class="even ">
880
984
  <div class="item">
881
985
  <span class='object_link'><a href="CSVDecision.html#root-class_method" title="CSVDecision.root (method)">root</a></span>
882
986
  <small>CSVDecision</small>
@@ -884,7 +988,7 @@
884
988
  </li>
885
989
 
886
990
 
887
- <li class="even ">
991
+ <li class="odd ">
888
992
  <div class="item">
889
993
  <span class='object_link'><a href="CSVDecision/Header.html#row%3F-class_method" title="CSVDecision::Header.row? (method)">row?</a></span>
890
994
  <small>CSVDecision::Header</small>
@@ -892,7 +996,7 @@
892
996
  </li>
893
997
 
894
998
 
895
- <li class="odd ">
999
+ <li class="even ">
896
1000
  <div class="item">
897
1001
  <span class='object_link'><a href="CSVDecision/Table.html#rows-instance_method" title="CSVDecision::Table#rows (method)">#rows</a></span>
898
1002
  <small>CSVDecision::Table</small>
@@ -900,6 +1004,14 @@
900
1004
  </li>
901
1005
 
902
1006
 
1007
+ <li class="odd ">
1008
+ <div class="item">
1009
+ <span class='object_link'><a href="CSVDecision/Decision.html#scan-instance_method" title="CSVDecision::Decision#scan (method)">#scan</a></span>
1010
+ <small>CSVDecision::Decision</small>
1011
+ </div>
1012
+ </li>
1013
+
1014
+
903
1015
  <li class="even ">
904
1016
  <div class="item">
905
1017
  <span class='object_link'><a href="CSVDecision/ScanRow.html#scan-class_method" title="CSVDecision::ScanRow.scan (method)">scan</a></span>
@@ -909,6 +1021,14 @@
909
1021
 
910
1022
 
911
1023
  <li class="odd ">
1024
+ <div class="item">
1025
+ <span class='object_link'><a href="CSVDecision/Paths.html#scan-class_method" title="CSVDecision::Paths.scan (method)">scan</a></span>
1026
+ <small>CSVDecision::Paths</small>
1027
+ </div>
1028
+ </li>
1029
+
1030
+
1031
+ <li class="even ">
912
1032
  <div class="item">
913
1033
  <span class='object_link'><a href="CSVDecision/ScanRow.html#scan_columns-instance_method" title="CSVDecision::ScanRow#scan_columns (method)">#scan_columns</a></span>
914
1034
  <small>CSVDecision::ScanRow</small>
@@ -916,7 +1036,7 @@
916
1036
  </li>
917
1037
 
918
1038
 
919
- <li class="even ">
1039
+ <li class="odd ">
920
1040
  <div class="item">
921
1041
  <span class='object_link'><a href="CSVDecision/Table.html#scan_rows-instance_method" title="CSVDecision::Table#scan_rows (method)">#scan_rows</a></span>
922
1042
  <small>CSVDecision::Table</small>
@@ -924,7 +1044,7 @@
924
1044
  </li>
925
1045
 
926
1046
 
927
- <li class="odd ">
1047
+ <li class="even ">
928
1048
  <div class="item">
929
1049
  <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#set_if-instance_method" title="CSVDecision::Dictionary::Entry#set_if (method)">#set_if</a></span>
930
1050
  <small>CSVDecision::Dictionary::Entry</small>
@@ -932,7 +1052,7 @@
932
1052
  </li>
933
1053
 
934
1054
 
935
- <li class="even ">
1055
+ <li class="odd ">
936
1056
  <div class="item">
937
1057
  <span class='object_link'><a href="CSVDecision/Data.html#strip_columns-class_method" title="CSVDecision::Data.strip_columns (method)">strip_columns</a></span>
938
1058
  <small>CSVDecision::Data</small>
@@ -940,7 +1060,7 @@
940
1060
  </li>
941
1061
 
942
1062
 
943
- <li class="odd ">
1063
+ <li class="even ">
944
1064
  <div class="item">
945
1065
  <span class='object_link'><a href="CSVDecision/Header.html#strip_empty_columns-class_method" title="CSVDecision::Header.strip_empty_columns (method)">strip_empty_columns</a></span>
946
1066
  <small>CSVDecision::Header</small>
@@ -948,6 +1068,14 @@
948
1068
  </li>
949
1069
 
950
1070
 
1071
+ <li class="odd ">
1072
+ <div class="item">
1073
+ <span class='object_link'><a href="CSVDecision/Paths.html#symbol-class_method" title="CSVDecision::Paths.symbol (method)">symbol</a></span>
1074
+ <small>CSVDecision::Paths</small>
1075
+ </div>
1076
+ </li>
1077
+
1078
+
951
1079
  <li class="even ">
952
1080
  <div class="item">
953
1081
  <span class='object_link'><a href="CSVDecision/Matchers/Proc.html#symbols-instance_method" title="CSVDecision::Matchers::Proc#symbols (method)">#symbols</a></span>
@@ -958,16 +1086,16 @@
958
1086
 
959
1087
  <li class="odd ">
960
1088
  <div class="item">
961
- <span class='object_link'><a href="CSVDecision/Parse.html#table-class_method" title="CSVDecision::Parse.table (method)">table</a></span>
962
- <small>CSVDecision::Parse</small>
1089
+ <span class='object_link'><a href="CSVDecision/Scan.html#table-class_method" title="CSVDecision::Scan.table (method)">table</a></span>
1090
+ <small>CSVDecision::Scan</small>
963
1091
  </div>
964
1092
  </li>
965
1093
 
966
1094
 
967
1095
  <li class="even ">
968
1096
  <div class="item">
969
- <span class='object_link'><a href="CSVDecision/Decision.html#table_scan-instance_method" title="CSVDecision::Decision#table_scan (method)">#table_scan</a></span>
970
- <small>CSVDecision::Decision</small>
1097
+ <span class='object_link'><a href="CSVDecision/Parse.html#table-class_method" title="CSVDecision::Parse.table (method)">table</a></span>
1098
+ <small>CSVDecision::Parse</small>
971
1099
  </div>
972
1100
  </li>
973
1101
 
@@ -998,21 +1126,29 @@
998
1126
 
999
1127
  <li class="even ">
1000
1128
  <div class="item">
1001
- <span class='object_link'><a href="CSVDecision/Matchers/Proc.html#type-instance_method" title="CSVDecision::Matchers::Proc#type (method)">#type</a></span>
1002
- <small>CSVDecision::Matchers::Proc</small>
1129
+ <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#type-instance_method" title="CSVDecision::Dictionary::Entry#type (method)">#type</a></span>
1130
+ <small>CSVDecision::Dictionary::Entry</small>
1003
1131
  </div>
1004
1132
  </li>
1005
1133
 
1006
1134
 
1007
1135
  <li class="odd ">
1008
1136
  <div class="item">
1009
- <span class='object_link'><a href="CSVDecision/Dictionary/Entry.html#type-instance_method" title="CSVDecision::Dictionary::Entry#type (method)">#type</a></span>
1010
- <small>CSVDecision::Dictionary::Entry</small>
1137
+ <span class='object_link'><a href="CSVDecision/Matchers/Proc.html#type-instance_method" title="CSVDecision::Matchers::Proc#type (method)">#type</a></span>
1138
+ <small>CSVDecision::Matchers::Proc</small>
1011
1139
  </div>
1012
1140
  </li>
1013
1141
 
1014
1142
 
1015
1143
  <li class="even ">
1144
+ <div class="item">
1145
+ <span class='object_link'><a href="CSVDecision/Paths.html#value-class_method" title="CSVDecision::Paths.value (method)">value</a></span>
1146
+ <small>CSVDecision::Paths</small>
1147
+ </div>
1148
+ </li>
1149
+
1150
+
1151
+ <li class="odd ">
1016
1152
  <div class="item">
1017
1153
  <span class='object_link'><a href="CSVDecision/Index.html#value-class_method" title="CSVDecision::Index.value (method)">value</a></span>
1018
1154
  <small>CSVDecision::Index</small>