env_parser 0.7.0 → 0.8.0

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