env_parser 0.7.0 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4e18299d9f60e90144794c743405a7719404e8a
4
- data.tar.gz: 57ea9d3762d0e6294600afc8df35968bd290dbd8
3
+ metadata.gz: a70a46c16cd38925dcbae5621e61fa57fc5099cd
4
+ data.tar.gz: 0da0da7bd7ddfd45a114e25847eac28126840759
5
5
  SHA512:
6
- metadata.gz: dc3918f1dd9be06601fe68826fd891f76081fa424a1607453f2956f09590e469b53029c8c4ad2b541f5619343ef44e132ac784e96e7c028da51bdc73b19ae886
7
- data.tar.gz: 34b54cc90f38bfe93994a42e90fd351573476bc503174de330258ffb7c8639c0bc147baaac079e5eff1eaffa5f02b01a6aed75adb41340c4fec90b40976e17c8
6
+ metadata.gz: 69c0ccf1c123fafa029834608a2937b06e7a4fa3a8e499bddfbc6440a358dff88a8e09b9ea235053be8fe5abe79f0ea4970cdb4499196f345b04fd289590cf2c
7
+ data.tar.gz: 263da8e5617b3d92107cb0a937785f0e9acfe2ef9d8eda6f36c111a9268d64c2826f2874836ecff1bd7a630876a8d02f91e4793b6c8b9e2c73a0baa646bb4778
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- env_parser (0.7.0)
4
+ env_parser (0.8.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -42,7 +42,7 @@ timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer
42
42
 
43
43
  ---
44
44
 
45
- The named `:as` parameter is required. Allowed values are:
45
+ The named `:as` parameter is required. The list of allowed values is user-expandable, but allowed values out-of-the-box are:
46
46
 
47
47
  <table>
48
48
  <tbody>
@@ -181,6 +181,36 @@ ENV.parse :SHORT_PI, as: :float ## => 3.1415926
181
181
  ENV.register :SHORT_PI, as: :float ## Your constant is set, my man!
182
182
  ```
183
183
 
184
+
185
+ #### Defining your own types for use with EnvParser
186
+
187
+ ```ruby
188
+ ## If you use a particular validation many times, or are often manipulating values in the same way
189
+ ## after EnvParser has done its thing, you may want to register a new type altogether.
190
+ ##
191
+ a = EnvParser.parse :A, as: :int, if_unset: nil
192
+ raise unless passes_all_my_checks?(a)
193
+
194
+ b = EnvParser.parse :B, as: :int, if_unset: nil
195
+ raise unless passes_all_my_checks?(b)
196
+
197
+ ## ... is perhaps best handled by defining a new type:
198
+ ##
199
+ EnvParser.define_type(:my_special_type_of_number, if_unset: nil) do |value|
200
+ value = value.to_i
201
+ raise(StandardError, 'this is not a "special type" number') unless passes_all_my_checks?(value)
202
+
203
+ value
204
+ end
205
+
206
+ a = EnvParser.parse :A, as: :my_special_type_of_number
207
+ b = EnvParser.parse :B, as: :my_special_type_of_number
208
+
209
+ ## Defining a new type makes your code both more maintainable (all the logic for your special type
210
+ ## is only defined once) and more readable (your "parse" calls aren't littered with type-checking
211
+ ## cruft).
212
+ ```
213
+
184
214
  ---
185
215
 
186
216
  [Consult the repo docs](http://nestor-custodio.github.io/env_parser) for the full EnvParser documentation.
@@ -190,7 +220,7 @@ ENV.register :SHORT_PI, as: :float ## Your constant is set, my man!
190
220
 
191
221
  Additional features/options coming in the future:
192
222
 
193
- - A means to register validation blocks as new "as" types. This will allow for custom "as" types like `:url`, `:email`, etc.
223
+ - Round out the "as" type selection with things like `:url`, `:email`, etc.
194
224
  - ... ?
195
225
 
196
226
 
@@ -119,7 +119,7 @@ different data types.</p>
119
119
 
120
120
 
121
121
 
122
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">ValueNotAllowed</a></span>
122
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="EnvParser/Error.html" title="EnvParser::Error (class)">Error</a></span>, <span class='object_link'><a href="EnvParser/TypeAlreadyDefined.html" title="EnvParser::TypeAlreadyDefined (class)">TypeAlreadyDefined</a></span>, <span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">ValueNotAllowed</a></span>
123
123
 
124
124
 
125
125
  </p>
@@ -130,7 +130,7 @@ different data types.</p>
130
130
  <dt id="VERSION-constant" class="">VERSION =
131
131
 
132
132
  </dt>
133
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.7.0</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
133
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.8.0</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
134
134
 
135
135
  </dl>
136
136
 
@@ -170,6 +170,31 @@ different data types.</p>
170
170
  methods.</p>
171
171
  </div></span>
172
172
 
173
+ </li>
174
+
175
+
176
+ <li class="public ">
177
+ <span class="summary_signature">
178
+
179
+ <a href="#define_type-class_method" title="define_type (class method)">.<strong>define_type</strong>(name, options = {}) { ... } &#x21d2; nil </a>
180
+
181
+
182
+
183
+ </span>
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+ <span class="summary_desc"><div class='inline'>
194
+ <p>Defines a new type for use as the “as” option on a subsequent
195
+ <code>.parse</code> or <code>.register</code> call.</p>
196
+ </div></span>
197
+
173
198
  </li>
174
199
 
175
200
 
@@ -281,22 +306,22 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
281
306
  <pre class="lines">
282
307
 
283
308
 
284
- 190
285
- 191
286
- 192
287
- 193
288
- 194
289
- 195
290
- 196
291
- 197
292
- 198
293
- 199
294
- 200
295
- 201
296
- 202</pre>
309
+ 229
310
+ 230
311
+ 231
312
+ 232
313
+ 233
314
+ 234
315
+ 235
316
+ 236
317
+ 237
318
+ 238
319
+ 239
320
+ 240
321
+ 241</pre>
297
322
  </td>
298
323
  <td>
299
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 190</span>
324
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 229</span>
300
325
 
301
326
  <span class='kw'>def</span> <span class='id identifier rubyid_add_env_bindings'>add_env_bindings</span>
302
327
  <span class='const'>ENV</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='kw'>do</span>
@@ -314,6 +339,211 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
314
339
  </td>
315
340
  </tr>
316
341
  </table>
342
+ </div>
343
+
344
+ <div class="method_details ">
345
+ <h3 class="signature " id="define_type-class_method">
346
+
347
+ .<strong>define_type</strong>(name, options = {}) { ... } &#x21d2; <tt>nil</tt>
348
+
349
+
350
+
351
+
352
+
353
+ </h3><div class="docstring">
354
+ <div class="discussion">
355
+
356
+ <p>Defines a new type for use as the “as” option on a subsequent
357
+ <code>.parse</code> or <code>.register</code> call.</p>
358
+
359
+
360
+ </div>
361
+ </div>
362
+ <div class="tags">
363
+ <p class="tag_title">Parameters:</p>
364
+ <ul class="param">
365
+
366
+ <li>
367
+
368
+ <span class='name'>name</span>
369
+
370
+
371
+ <span class='type'>(<tt>Symbol</tt>)</span>
372
+
373
+
374
+
375
+ &mdash;
376
+ <div class='inline'>
377
+ <p>The name to assign to the type.</p>
378
+ </div>
379
+
380
+ </li>
381
+
382
+ <li>
383
+
384
+ <span class='name'>options</span>
385
+
386
+
387
+ <span class='type'>(<tt>Hash</tt>)</span>
388
+
389
+
390
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
391
+
392
+
393
+ &mdash;
394
+ <div class='inline'>
395
+ <p>a customizable set of options</p>
396
+ </div>
397
+
398
+ </li>
399
+
400
+ </ul>
401
+
402
+
403
+
404
+
405
+
406
+
407
+ <p class="tag_title">Options Hash (<tt>options</tt>):</p>
408
+ <ul class="option">
409
+
410
+ <li>
411
+ <span class="name">aliases</span>
412
+ <span class="type">(<tt>Array&lt;Symbol&gt;</tt>)</span>
413
+ <span class="default">
414
+
415
+ </span>
416
+
417
+ &mdash; <div class='inline'>
418
+ <p>An array of additional names you&#39;d like to see refer to this same type.</p>
419
+ </div>
420
+
421
+ </li>
422
+
423
+ <li>
424
+ <span class="name">if_unset</span>
425
+ <span class="type">(<tt>Object</tt>)</span>
426
+ <span class="default">
427
+
428
+ </span>
429
+
430
+ &mdash; <div class='inline'>
431
+ <p>Specifies a “sensible default” to return for this type if the value being
432
+ parsed (via <code>.parse</code> or <code>.register</code>) is either unset
433
+ (<code>nil</code>) or blank (<code>&#39;&#39;</code>). Note this may be
434
+ overridden by the user via the <code>.parse</code>/<code>.register</code>
435
+ “if_unset” option.</p>
436
+ </div>
437
+
438
+ </li>
439
+
440
+ </ul>
441
+
442
+
443
+ <p class="tag_title">Yields:</p>
444
+ <ul class="yield">
445
+
446
+ <li>
447
+
448
+
449
+ <span class='type'></span>
450
+
451
+
452
+
453
+
454
+ <div class='inline'>
455
+ <p>A block to act as the parser for the this type. If no block is given, an
456
+ ArgumentError is raised.</p>
457
+
458
+ <p>When the type defined is used via a
459
+ <code>.parse</code>/<code>.register</code> call, this block is invoked with
460
+ the value to be parsed. Said value is guaranteed to be a non-empty String
461
+ (the “if_unset” check will have already run), but no other assurances as to
462
+ content are given. The block should return the final output of parsing the
463
+ given String value as the type being defined.</p>
464
+
465
+ <p>If the value given cannot be sensibly parsed into the type defined, the
466
+ block should raise an EnvParser::ValueNotAllowed exception.</p>
467
+ </div>
468
+
469
+ </li>
470
+
471
+ </ul>
472
+ <p class="tag_title">Returns:</p>
473
+ <ul class="return">
474
+
475
+ <li>
476
+
477
+
478
+ <span class='type'>(<tt>nil</tt>)</span>
479
+
480
+
481
+
482
+ &mdash;
483
+ <div class='inline'>
484
+ <p>This generates no usable value.</p>
485
+ </div>
486
+
487
+ </li>
488
+
489
+ </ul>
490
+ <p class="tag_title">Raises:</p>
491
+ <ul class="raise">
492
+
493
+ <li>
494
+
495
+
496
+ <span class='type'>(<tt>ArgumentError</tt>, <tt><span class='object_link'><a href="EnvParser/TypeAlreadyDefined.html" title="EnvParser::TypeAlreadyDefined (class)">EnvParser::TypeAlreadyDefined</a></span></tt>)</span>
497
+
498
+
499
+
500
+ </li>
501
+
502
+ </ul>
503
+
504
+ </div><table class="source_code">
505
+ <tr>
506
+ <td>
507
+ <pre class="lines">
508
+
509
+
510
+ 53
511
+ 54
512
+ 55
513
+ 56
514
+ 57
515
+ 58
516
+ 59
517
+ 60
518
+ 61
519
+ 62
520
+ 63
521
+ 64
522
+ 65
523
+ 66
524
+ 67</pre>
525
+ </td>
526
+ <td>
527
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 53</span>
528
+
529
+ <span class='kw'>def</span> <span class='id identifier rubyid_define_type'>define_type</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_parser'>parser</span><span class='rparen'>)</span>
530
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>no parsing block given</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
531
+
532
+ <span class='id identifier rubyid_given_types'>given_types</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:aliases</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:to_sym</span><span class='rparen'>)</span>
533
+ <span class='id identifier rubyid_given_types'>given_types</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_type'>type</span><span class='op'>|</span>
534
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="EnvParser/TypeAlreadyDefined.html" title="EnvParser::TypeAlreadyDefined (class)">TypeAlreadyDefined</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cannot redefine </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_known_types'>known_types</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span>
535
+
536
+ <span class='id identifier rubyid_known_types'>known_types</span><span class='lbracket'>[</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span>
537
+ <span class='label'>parser:</span> <span class='id identifier rubyid_parser'>parser</span><span class='comma'>,</span>
538
+ <span class='label'>if_unset:</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:if_unset</span><span class='rbracket'>]</span>
539
+ <span class='rbrace'>}</span>
540
+ <span class='kw'>end</span>
541
+
542
+ <span class='kw'>nil</span>
543
+ <span class='kw'>end</span></pre>
544
+ </td>
545
+ </tr>
546
+ </table>
317
547
  </div>
318
548
 
319
549
  <div class="method_details ">
@@ -392,27 +622,10 @@ be used.</p>
392
622
 
393
623
  &mdash; <div class='inline'>
394
624
  <p>The expected return type. A best-effort attempt is made to convert the
395
- source String to the requested type. Valid “as” types are:</p>
396
- <ul><li>
397
- <p><code>:string</code></p>
398
- </li><li>
399
- <p><code>:symbol</code></p>
400
- </li><li>
401
- <p><code>:boolean</code></p>
402
- </li><li>
403
- <p><code>:int</code> / <code>:integer</code></p>
404
- </li><li>
405
- <p><code>:float</code> / <code>:decimal</code> / <code>:number</code></p>
406
- </li><li>
407
- <p><code>:json</code></p>
408
- </li><li>
409
- <p><code>:array</code></p>
410
- </li><li>
411
- <p><code>:hash</code></p>
412
- </li></ul>
413
-
414
- <p>If no “as” option is given (or the “as” value given is not on the above
415
- list), an ArgumentError exception is raised.</p>
625
+ source String to the requested type.</p>
626
+
627
+ <p>If no “as” option is given (or the “as” value given has not been defined),
628
+ an ArgumentError exception is raised.</p>
416
629
  </div>
417
630
 
418
631
  </li>
@@ -528,51 +741,35 @@ pass.</strong></p>
528
741
  <pre class="lines">
529
742
 
530
743
 
531
- 72
532
- 73
533
- 74
534
- 75
535
- 76
536
- 77
537
- 78
538
- 79
539
- 80
540
- 81
541
- 82
542
- 83
543
- 84
544
- 85
545
- 86
546
- 87
547
- 88
548
- 89
549
- 90
550
- 91
551
- 92
552
- 93
553
- 94</pre>
744
+ 119
745
+ 120
746
+ 121
747
+ 122
748
+ 123
749
+ 124
750
+ 125
751
+ 126
752
+ 127
753
+ 128
754
+ 129
755
+ 130
756
+ 131
757
+ 132
758
+ 133</pre>
554
759
  </td>
555
760
  <td>
556
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 72</span>
761
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 119</span>
557
762
 
558
763
  <span class='kw'>def</span> <span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_validation_block'>validation_block</span><span class='rparen'>)</span>
559
764
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Symbol</span>
560
765
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
561
766
 
562
- <span class='kw'>return</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:if_unset</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='symbol'>:if_unset</span><span class='rparen'>)</span>
767
+ <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_known_types'>known_types</span><span class='lbracket'>[</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
768
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid `as` parameter: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_type'>type</span>
563
769
 
564
- <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='kw'>case</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span>
565
- <span class='kw'>when</span> <span class='symbol'>:string</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_string'>parse_string</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
566
- <span class='kw'>when</span> <span class='symbol'>:symbol</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_symbol'>parse_symbol</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
567
- <span class='kw'>when</span> <span class='symbol'>:boolean</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_boolean'>parse_boolean</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
568
- <span class='kw'>when</span> <span class='symbol'>:int</span><span class='comma'>,</span> <span class='symbol'>:integer</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_integer'>parse_integer</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
569
- <span class='kw'>when</span> <span class='symbol'>:float</span><span class='comma'>,</span> <span class='symbol'>:decimal</span><span class='comma'>,</span> <span class='symbol'>:number</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_float'>parse_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
570
- <span class='kw'>when</span> <span class='symbol'>:json</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_json'>parse_json</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
571
- <span class='kw'>when</span> <span class='symbol'>:array</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_array'>parse_array</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
572
- <span class='kw'>when</span> <span class='symbol'>:hash</span> <span class='kw'>then</span> <span class='id identifier rubyid_parse_hash'>parse_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
573
- <span class='kw'>else</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid `as` parameter: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:as</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
574
- <span class='kw'>end</span>
770
+ <span class='kw'>return</span> <span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='symbol'>:if_unset</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:if_unset</span><span class='rbracket'>]</span> <span class='op'>:</span> <span class='id identifier rubyid_type'>type</span><span class='lbracket'>[</span><span class='symbol'>:if_unset</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
575
771
 
772
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span><span class='lbracket'>[</span><span class='symbol'>:parser</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
576
773
  <span class='id identifier rubyid_check_for_set_inclusion'>check_for_set_inclusion</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>set:</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:from_set</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_key?'>key?</span><span class='lparen'>(</span><span class='symbol'>:from_set</span><span class='rparen'>)</span>
577
774
  <span class='id identifier rubyid_check_user_defined_validations'>check_user_defined_validations</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='label'>proc:</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:validated_by</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>block:</span> <span class='id identifier rubyid_validation_block'>validation_block</span><span class='rparen'>)</span>
578
775
 
@@ -791,43 +988,43 @@ constants simultaneously – each value needing validation must give its own
791
988
  <pre class="lines">
792
989
 
793
990
 
794
- 146
795
- 147
796
- 148
797
- 149
798
- 150
799
- 151
800
- 152
801
- 153
802
- 154
803
- 155
804
- 156
805
- 157
806
- 158
807
- 159
808
- 160
809
- 161
810
- 162
811
- 163
812
- 164
813
- 165
814
- 166
815
- 167
816
- 168
817
- 169
818
- 170
819
- 171
820
- 172
821
- 173
822
- 174
823
- 175
824
- 176
825
- 177
826
- 178
827
- 179</pre>
991
+ 185
992
+ 186
993
+ 187
994
+ 188
995
+ 189
996
+ 190
997
+ 191
998
+ 192
999
+ 193
1000
+ 194
1001
+ 195
1002
+ 196
1003
+ 197
1004
+ 198
1005
+ 199
1006
+ 200
1007
+ 201
1008
+ 202
1009
+ 203
1010
+ 204
1011
+ 205
1012
+ 206
1013
+ 207
1014
+ 208
1015
+ 209
1016
+ 210
1017
+ 211
1018
+ 212
1019
+ 213
1020
+ 214
1021
+ 215
1022
+ 216
1023
+ 217
1024
+ 218</pre>
828
1025
  </td>
829
1026
  <td>
830
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 146</span>
1027
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 185</span>
831
1028
 
832
1029
  <span class='kw'>def</span> <span class='id identifier rubyid_register'>register</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_validation_block'>validation_block</span><span class='rparen'>)</span>
833
1030
  <span class='comment'>## We want to allow for registering multiple variables simultaneously via a single `.register`
@@ -873,7 +1070,7 @@ constants simultaneously – each value needing validation must give its own
873
1070
  </div>
874
1071
 
875
1072
  <div id="footer">
876
- Generated on Mon Dec 11 23:37:25 2017 by
1073
+ Generated on Sun Dec 24 19:33:35 2017 by
877
1074
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
878
1075
  0.9.11 (ruby-2.4.2).
879
1076
  </div>