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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +26 -2
- data/csv_decision.gemspec +1 -1
- data/doc/CSVDecision/CellValidationError.html +2 -2
- data/doc/CSVDecision/Columns/Default.html +203 -23
- data/doc/CSVDecision/Columns/Dictionary.html +118 -25
- data/doc/CSVDecision/Columns.html +213 -31
- data/doc/CSVDecision/Data.html +1 -1
- data/doc/CSVDecision/Decide.html +1 -1
- data/doc/CSVDecision/Decision.html +1 -1
- data/doc/CSVDecision/Defaults.html +291 -0
- data/doc/CSVDecision/Dictionary/Entry.html +584 -47
- data/doc/CSVDecision/Dictionary.html +20 -20
- data/doc/CSVDecision/Error.html +2 -2
- data/doc/CSVDecision/FileError.html +1 -1
- data/doc/CSVDecision/Header.html +110 -33
- data/doc/CSVDecision/Input.html +1 -1
- data/doc/CSVDecision/Load.html +1 -1
- data/doc/CSVDecision/Matchers/Constant.html +12 -37
- data/doc/CSVDecision/Matchers/Function.html +1 -1
- data/doc/CSVDecision/Matchers/Guard.html +15 -13
- data/doc/CSVDecision/Matchers/Matcher.html +1 -1
- data/doc/CSVDecision/Matchers/Numeric.html +13 -21
- data/doc/CSVDecision/Matchers/Pattern.html +14 -14
- data/doc/CSVDecision/Matchers/Proc.html +1 -1
- data/doc/CSVDecision/Matchers/Range.html +13 -58
- data/doc/CSVDecision/Matchers/Symbol.html +1 -1
- data/doc/CSVDecision/Matchers.html +9 -9
- data/doc/CSVDecision/Options.html +1 -1
- data/doc/CSVDecision/Parse.html +90 -19
- data/doc/CSVDecision/Result.html +1 -1
- data/doc/CSVDecision/ScanRow.html +17 -17
- data/doc/CSVDecision/Table.html +50 -48
- data/doc/CSVDecision/TableValidationError.html +143 -0
- data/doc/CSVDecision/Validate.html +422 -0
- data/doc/CSVDecision.html +8 -8
- data/doc/_index.html +33 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +27 -3
- data/doc/index.html +27 -3
- data/doc/method_list.html +193 -89
- data/doc/top-level-namespace.html +1 -1
- data/lib/csv_decision/columns.rb +28 -27
- data/lib/csv_decision/defaults.rb +47 -0
- data/lib/csv_decision/dictionary.rb +104 -112
- data/lib/csv_decision/header.rb +13 -10
- data/lib/csv_decision/input.rb +53 -5
- data/lib/csv_decision/matchers/constant.rb +1 -2
- data/lib/csv_decision/matchers/guard.rb +3 -2
- data/lib/csv_decision/matchers/numeric.rb +4 -6
- data/lib/csv_decision/matchers/pattern.rb +6 -8
- data/lib/csv_decision/matchers/range.rb +1 -3
- data/lib/csv_decision/matchers.rb +7 -7
- data/lib/csv_decision/parse.rb +24 -3
- data/lib/csv_decision/scan_row.rb +16 -16
- data/lib/csv_decision/table.rb +3 -7
- data/lib/csv_decision/validate.rb +85 -0
- data/lib/csv_decision.rb +3 -1
- data/spec/csv_decision/columns_spec.rb +38 -22
- data/spec/csv_decision/examples_spec.rb +17 -0
- data/spec/csv_decision/matchers/range_spec.rb +0 -32
- data/spec/csv_decision/table_spec.rb +39 -0
- metadata +7 -2
data/doc/file.README.html
CHANGED
@@ -262,7 +262,7 @@ operators are also supported: <code>!=</code>, <code>></code>,
|
|
262
262
|
<code>>=</code>, <code><</code>, <code><=</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'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><=</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><=</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'><<~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'>'</span><span class='tstring_content'>1234567890</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Private</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> {PAID: '1234567890', 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'>'</span><span class='tstring_content'>123456789012</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>country:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>GB</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>private</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> {PAID: '123456789012', 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
|
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>></code>,
|
|
262
262
|
<code>>=</code>, <code><</code>, <code><=</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'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><=</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><=</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'><<~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'>'</span><span class='tstring_content'>1234567890</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Private</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> {PAID: '1234567890', 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'>'</span><span class='tstring_content'>123456789012</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>country:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>GB</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>class:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>private</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='comment'>#=> {PAID: '123456789012', 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
|
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>
|