env_parser 0.8.0 → 1.0.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: a70a46c16cd38925dcbae5621e61fa57fc5099cd
4
- data.tar.gz: 0da0da7bd7ddfd45a114e25847eac28126840759
3
+ metadata.gz: 71db2fdf0d882840050bc0718e4695f3eeedfef4
4
+ data.tar.gz: e25fb8e4e50bc32c16f7479a26ca125818f35dc4
5
5
  SHA512:
6
- metadata.gz: 69c0ccf1c123fafa029834608a2937b06e7a4fa3a8e499bddfbc6440a358dff88a8e09b9ea235053be8fe5abe79f0ea4970cdb4499196f345b04fd289590cf2c
7
- data.tar.gz: 263da8e5617b3d92107cb0a937785f0e9acfe2ef9d8eda6f36c111a9268d64c2826f2874836ecff1bd7a630876a8d02f91e4793b6c8b9e2c73a0baa646bb4778
6
+ metadata.gz: c27c985ef686b9c658648e833ee0cb1c65c191f38968ea3ad7114d2d4ed71ae737b4dd2cc951b168b7947ac61bbca4352585a503669934a075cbbf60ece9f0f7
7
+ data.tar.gz: f450e32ad5fdcbd32da05eb8ac49c984df30515262d63511e59d5a5093fc8fd418106f71b9e7740c43aed24a51abc4f8464ab675acad7e493be3de5b033e0934
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- env_parser (0.8.0)
4
+ env_parser (1.0.0)
5
5
  activesupport (>= 5.0.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # EnvParser [![Gem Version](https://badge.fury.io/rb/env_parser.svg)](https://badge.fury.io/rb/env_parser)
2
2
 
3
- If your code uses environment variables, you know that `ENV` will always surface these as strings. Interpreting these strings as the value you *actually* want to see/use takes some work, however: for numbers you need to cast with `#to_i`/`#to_f`, for booleans you need to check for a specific value (`ENV['SOME_VAR'] == 'true'`), etc. Maybe you want to set non-trivial defaults (something other than `0` or `''`)? Maybe you only want to allow values from a limited set? ...
3
+ If your code uses environment variables, you know that `ENV` will always surface these as strings. Interpreting these strings as the value you *actually* want to see/use takes some work, however: for numbers you need to cast with `to_i` or `to_f` ... for booleans you need to check for a specific value (`ENV['SOME_VAR'] == 'true'`) ... maybe you want to set non-trivial defaults (something other than `0` or `''`)? ... maybe you only want to allow values from a limited set? ...
4
4
 
5
- Things can get out of control pretty fast, especially as the number of environment variables in play grows. Tools like [dotenv](https://github.com/bkeepers/dotenv) help to make sure you're loading the correct set of *variables*, but EnvParser makes *the values themselves* usable with a minimum of effort.
5
+ Things can get out of control pretty fast, especially as the number of environment variables in play grows. Tools like [dotenv](https://github.com/bkeepers/dotenv) help to make sure you're loading the correct **set** of variables, but [EnvParser](https://github.com/nestor-custodio/env_parser) makes ***the values themselves*** usable with a minimum of effort.
6
6
 
7
7
 
8
8
  ## Installation
@@ -24,72 +24,28 @@ Or install it yourself as:
24
24
 
25
25
  ## Using EnvParser
26
26
 
27
- #### Basic Usage
27
+ ### Basic Usage
28
+
29
+ #### Parsing ENV Values
28
30
 
29
31
  ```ruby
30
- ## Returns ENV['TIMEOUT_MS'] as an Integer.
31
- ## Yields 0 if ENV['TIMEOUT_MS'] is unset or nil.
32
- ##
32
+ ## Returns ENV['TIMEOUT_MS'] as an Integer,
33
+ ## or 0 if ENV['TIMEOUT_MS'] is unset or nil.
34
+
33
35
  timeout_ms = EnvParser.parse ENV['TIMEOUT_MS'], as: :integer
34
36
 
37
+
35
38
  ## LESS TYPING, PLZ! :(
36
39
  ## If you pass in a Symbol instead of a String, EnvParser
37
40
  ## will use the value behind the matching String key in ENV.
38
41
  ## (i.e. passing in ENV['X'] is equivalent to passing in :X)
39
- ##
42
+
40
43
  timeout_ms = EnvParser.parse :TIMEOUT_MS, as: :integer
41
44
  ```
42
45
 
43
- ---
44
-
45
- The named `:as` parameter is required. The list of allowed values is user-expandable, but allowed values out-of-the-box are:
46
-
47
- <table>
48
- <tbody>
49
- <tr>
50
- <th><code>:as</code> value</th>
51
- <th>type returned</th>
52
- </tr>
53
- </tbody>
54
- <tbody>
55
- <tr>
56
- <td>:string</td>
57
- <td>String</td>
58
- </tr>
59
- <tr>
60
- <td>:symbol</td>
61
- <td>Symbol</td>
62
- </tr>
63
- <tr>
64
- <td>:boolean</td>
65
- <td>TrueValue / FalseValue</td>
66
- </tr>
67
- <tr>
68
- <td>:int / :integer</td>
69
- <td>Integer</td>
70
- </tr>
71
- <tr>
72
- <td>:float / :decimal / :number</td>
73
- <td>Float</td>
74
- </tr>
75
- <tr>
76
- <td>:json</td>
77
- <td>&lt; depends on JSON given &gt;</td>
78
- </tr>
79
- <tr>
80
- <td>:array</td>
81
- <td>Array</td>
82
- </tr>
83
- <tr>
84
- <td>:hash</td>
85
- <td>Hash</td>
86
- </tr>
87
- </tbody>
88
- </table>
89
-
90
-
91
- Note JSON is parsed using *quirks-mode* (meaning 'true', '25', and 'null' are all considered valid, parseable JSON).
46
+ For a full list of all "as" types available out-of-the-box, [see the documentation for modules listed under EnvParserTypes](http://nestor-custodio.github.io/env_parser/EnvParserTypes.html).
92
47
 
48
+ ---
93
49
 
94
50
  #### Setting Non-Trivial Defaults
95
51
 
@@ -98,65 +54,50 @@ Note JSON is parsed using *quirks-mode* (meaning 'true', '25', and 'null' are al
98
54
  ## the return value is a sensible default for the given "as" type
99
55
  ## (0 or 0.0 for numbers, an empty tring, an empty Array or Hash, etc).
100
56
  ## Sometimes you want a non-trivial default, however.
101
- ##
102
- EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer ## => 0
103
- EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 250 ## => 250
57
+
58
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer ## => 0
59
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 250 ## => 250
60
+
104
61
 
105
62
  ## Note that "if_unset" values are used as-is, with no type conversion.
106
- ##
107
- EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 'Whoops!' ## => 'Whoops!'
63
+
64
+ EnvParser.parse :MISSING_ENV_VARIABLE, as: :integer, if_unset: 'Careful!' ## => 'Careful!'
108
65
  ```
109
66
 
67
+ ---
110
68
 
111
- #### Validating Parsed ENV Values
69
+ #### Setting Constants From ENV Values
112
70
 
113
71
  ```ruby
114
- ## Sometimes setting the type alone is a bit too open-ended.
115
- ## The "from_set" option lets you restrict the set of allowed values.
116
- ##
117
- EnvParser.parse :API_TO_USE, as: :symbol, from_set: %i[internal external]
118
- EnvParser.parse :SOME_CUSTOM_NETWORK_PORT, as: :integer, from_set: (1..65535), if_unset: 80
72
+ ## Global constants...
119
73
 
120
- ## And if the value is not allowed...
121
- ##
122
- EnvParser.parse :NEGATIVE_NUMBER, as: :integer, from_set: (1..5) ## => raises EnvParser::ValueNotAllowed
74
+ ENV['API_KEY'] ## => 'unbreakable p4$$w0rd'
123
75
 
76
+ EnvParser.register :API_KEY, as: :string
77
+ API_KEY ## => 'unbreakable p4$$w0rd' (registered within the Kernel module, so it's available everywhere)
124
78
 
125
- ## The "validated_by" option allows for more complex validation.
126
- ##
127
- EnvParser.parse :MUST_BE_LOWERCASE, as: :string, validated_by: ->(value) { value == value.downcase }
128
79
 
129
- ## ... but a block will also do the trick!
130
- EnvParser.parse(:MUST_BE_LOWERCASE, as: :string) { |value| value == value.downcase }
131
- EnvParser.parse(:CONNECTION_RETRIES, as: :integer, &:nonzero?)
132
- ```
80
+ ## ... and class/module-level constants!
133
81
 
82
+ ENV['ULTIMATE_LINK'] ## => 'https://youtu.be/L_jWHffIx5E'
134
83
 
135
- #### Setting Constants From ENV Values
84
+ EnvParser.register :ULTIMATE_LINK, as: :string, within: URI
85
+ URI::ULTIMATE_LINK ## => 'https://youtu.be/L_jWHffIx5E'
86
+
87
+ ULTIMATE_LINK ## => raises NameError (the un-namespaced constant is only in scope within the URI module)
136
88
 
137
- ```ruby
138
- ## Global constants...
139
- ##
140
- ENV['API_KEY'] ## => 'unbreakable p4$$w0rd' (Set elsewhere, like a ".env" file.)
141
- EnvParser.register :API_KEY, as: :string
142
- API_KEY ## => 'unbreakable p4$$w0rd' (registered within the Kernel module, so it's available everywhere)
143
89
 
144
- ## ... and class/module constants!
145
- ##
146
- ENV['ULTIMATE_LINK'] ## => 'https://youtu.be/L_jWHffIx5E' (Set elsewhere, like a ".env" file.)
147
- EnvParser.register :ULTIMATE_LINK, as: :string, within: URI
148
- URI::ULTIMATE_LINK ## => 'https://youtu.be/L_jWHffIx5E' (You know you want to check it out!)
149
- ULTIMATE_LINK ## => raises NameError (the un-namespaced constant is only in scope within the URI module)
150
90
 
151
91
 
152
92
  ## You can also set multiple constants in one call, which is considerably cleaner to read:
153
- ##
93
+
154
94
  EnvParser.register :A, as: :string
155
95
  EnvParser.register :B, as: :integer, if_unset: 25
156
96
  EnvParser.register :C, as: :boolean, if_unset: true
157
97
 
98
+
158
99
  ## ... is equivalent to ...
159
- ##
100
+
160
101
  EnvParser.register(
161
102
  A: { as: :string },
162
103
  B: { as: :integer, if_unset: 25 },
@@ -164,41 +105,87 @@ EnvParser.register(
164
105
  )
165
106
  ```
166
107
 
108
+ ---
167
109
 
168
110
  #### Binding EnvParser Proxies Onto ENV
169
111
 
170
112
  ```ruby
171
- ## To allow for even cleaner usage, you can bind proxy "parse" and "register" methods onto ENV.
172
- ## This is done cleanly and without polluting the method space for any other objects.
173
- ##
174
- EnvParser.add_env_bindings ## Sets up the proxy methods.
175
-
176
- ## Now you can call "parse" and "register" on ENV itself. Note that ENV's proxy "parse" method will
177
- ## attempt to interpret any value given as an ENV key (converting to a String, if necessary).
178
- ##
179
- ENV['SHORT_PI'] ## => '3.1415926'
180
- ENV.parse :SHORT_PI, as: :float ## => 3.1415926
181
- ENV.register :SHORT_PI, as: :float ## Your constant is set, my man!
113
+ ## You can bind proxy "parse" and "register" methods onto ENV.
114
+ ## This is done without polluting the method space for other objects.
115
+
116
+ EnvParser.add_env_bindings ## Sets up the proxy methods.
117
+
118
+
119
+ ## Now you can call "parse" and "register" on ENV itself,
120
+ ## which is more legible and feels more straight-forward.
121
+
122
+ ENV['SHORT_PI'] ## => '3.1415926'
123
+
124
+ ENV.parse :SHORT_PI, as: :float ## => 3.1415926
125
+ ENV.register :SHORT_PI, as: :float ## Your constant is set, my man!
126
+
127
+
128
+ ## Note that ENV's proxy "parse" method will *always* interpret the
129
+ ## value given as an ENV key (converting to a String, if necessary).
130
+ ## This is different from the non-proxy "parse" method, which will use
131
+ ## String values as-is and only looks up ENV values when given a Symbol.
132
+ ```
133
+
134
+
135
+ ### Advanced Usage
136
+
137
+ #### Custom Validation Of Parsed Values
138
+
139
+ ```ruby
140
+ ## Sometimes setting the type alone is a bit too open-ended.
141
+ ## The "from_set" option lets you restrict the set of allowed values.
142
+
143
+ EnvParser.parse :API_TO_USE, as: :symbol, from_set: %i[internal external]
144
+ EnvParser.parse :SOME_CUSTOM_NETWORK_PORT, as: :integer, from_set: (1..65535), if_unset: 80
145
+
146
+
147
+ ## And if the value is not allowed...
148
+
149
+ EnvParser.parse :NEGATIVE_NUMBER, as: :integer, from_set: (1..5) ## => raises EnvParser::ValueNotAllowed
150
+
151
+
152
+
153
+
154
+ ## The "validated_by" option allows for more complex validation.
155
+
156
+ EnvParser.parse :MUST_BE_LOWERCASE, as: :string, validated_by: ->(value) { value == value.downcase }
157
+
158
+
159
+ ## ... but a block will also do the trick!
160
+
161
+ EnvParser.parse(:MUST_BE_LOWERCASE, as: :string) { |value| value == value.downcase }
162
+ EnvParser.parse(:CONNECTION_RETRIES, as: :integer, &:nonzero?)
182
163
  ```
183
164
 
165
+ ---
184
166
 
185
- #### Defining your own types for use with EnvParser
167
+ #### Defining Your Own EnvParser "as" Types
186
168
 
187
169
  ```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
- ##
170
+ ## If you use a particular validation many times,
171
+ ## or are often manipulating values in the same way
172
+ ## after EnvParser has done its thing, you may want
173
+ ## to register a new type altogether.
174
+
191
175
  a = EnvParser.parse :A, as: :int, if_unset: nil
192
176
  raise unless passes_all_my_checks?(a)
193
177
 
194
178
  b = EnvParser.parse :B, as: :int, if_unset: nil
195
179
  raise unless passes_all_my_checks?(b)
196
180
 
181
+
197
182
  ## ... is perhaps best handled by defining a new type:
198
- ##
183
+
199
184
  EnvParser.define_type(:my_special_type_of_number, if_unset: nil) do |value|
200
185
  value = value.to_i
201
- raise(StandardError, 'this is not a "special type" number') unless passes_all_my_checks?(value)
186
+ unless passes_all_my_checks?(value)
187
+ raise(EnvParser::ValueNotConvertibleError, 'cannot parse as a "special type number"')
188
+ end
202
189
 
203
190
  value
204
191
  end
@@ -206,14 +193,16 @@ end
206
193
  a = EnvParser.parse :A, as: :my_special_type_of_number
207
194
  b = EnvParser.parse :B, as: :my_special_type_of_number
208
195
 
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).
196
+
197
+ ## Defining a new type makes your code both more maintainable
198
+ ## (all the logic for your special type is only defined once)
199
+ ## and more readable (your "parse" calls aren't littered with
200
+ ## type-checking cruft).
212
201
  ```
213
202
 
214
203
  ---
215
204
 
216
- [Consult the repo docs](http://nestor-custodio.github.io/env_parser) for the full EnvParser documentation.
205
+ [Consult the repo docs for the full EnvParser documentation.](http://nestor-custodio.github.io/env_parser/EnvParser.html)
217
206
 
218
207
 
219
208
  ## Feature Roadmap / Future Development
@@ -232,8 +221,6 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
232
221
 
233
222
  Linting is courtesy of [Rubocop](https://github.com/bbatsov/rubocop) and documentation is built using [Yard](https://yardoc.org/). Neither is included in the Gemspec; you'll need to install these locally to take advantage.
234
223
 
235
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
236
-
237
224
 
238
225
  ## License
239
226
 
@@ -95,7 +95,7 @@
95
95
  <dl>
96
96
  <dt>Defined in:</dt>
97
97
  <dd>lib/env_parser.rb<span class="defines">,<br />
98
- lib/env_parser/version.rb</span>
98
+ lib/env_parser/errors.rb,<br /> lib/env_parser/version.rb</span>
99
99
  </dd>
100
100
  </dl>
101
101
 
@@ -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/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>
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/TypeAlreadyDefinedError.html" title="EnvParser::TypeAlreadyDefinedError (class)">TypeAlreadyDefinedError</a></span>, <span class='object_link'><a href="EnvParser/UnknownTypeError.html" title="EnvParser::UnknownTypeError (class)">UnknownTypeError</a></span>, <span class='object_link'><a href="EnvParser/ValueNotAllowedError.html" title="EnvParser::ValueNotAllowedError (class)">ValueNotAllowedError</a></span>, <span class='object_link'><a href="EnvParser/ValueNotConvertibleError.html" title="EnvParser::ValueNotConvertibleError (class)">ValueNotConvertibleError</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.8.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'>1.0.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
 
@@ -166,8 +166,7 @@ different data types.</p>
166
166
 
167
167
 
168
168
  <span class="summary_desc"><div class='inline'>
169
- <p>Creates ENV bindings for EnvParser.parse and EnvParser.register proxy
170
- methods.</p>
169
+ <p>Creates ENV bindings for <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">EnvParser.parse</a></span> and <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">EnvParser.register</a></span> proxy methods.</p>
171
170
  </div></span>
172
171
 
173
172
  </li>
@@ -176,7 +175,7 @@ methods.</p>
176
175
  <li class="public ">
177
176
  <span class="summary_signature">
178
177
 
179
- <a href="#define_type-class_method" title="define_type (class method)">.<strong>define_type</strong>(name, options = {}) { ... } &#x21d2; nil </a>
178
+ <a href="#define_type-class_method" title="define_type (class method)">.<strong>define_type</strong>(name, options = {}) {|value| ... } &#x21d2; nil </a>
180
179
 
181
180
 
182
181
 
@@ -191,8 +190,8 @@ methods.</p>
191
190
 
192
191
 
193
192
  <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>
193
+ <p>Defines a new type for use as the “as” option on a subsequent <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">EnvParser.parse</a></span> or
194
+ <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">EnvParser.register</a></span> call.</p>
196
195
  </div></span>
197
196
 
198
197
  </li>
@@ -268,8 +267,7 @@ requested context.</p>
268
267
  </h3><div class="docstring">
269
268
  <div class="discussion">
270
269
 
271
- <p>Creates ENV bindings for EnvParser.parse and EnvParser.register proxy
272
- methods.</p>
270
+ <p>Creates ENV bindings for <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span> and <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> proxy methods.</p>
273
271
 
274
272
  <p>The sole difference between these proxy methods and their EnvParser
275
273
  counterparts is that ENV.parse will interpret any value given as an ENV key
@@ -293,7 +291,7 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
293
291
 
294
292
  &mdash;
295
293
  <div class='inline'>
296
- <p>This generates no usable value, so we may as well return ENV for chaining?</p>
294
+ <p>This generates no usable value.</p>
297
295
  </div>
298
296
 
299
297
  </li>
@@ -306,22 +304,22 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
306
304
  <pre class="lines">
307
305
 
308
306
 
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>
307
+ 216
308
+ 217
309
+ 218
310
+ 219
311
+ 220
312
+ 221
313
+ 222
314
+ 223
315
+ 224
316
+ 225
317
+ 226
318
+ 227
319
+ 228</pre>
322
320
  </td>
323
321
  <td>
324
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 229</span>
322
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 216</span>
325
323
 
326
324
  <span class='kw'>def</span> <span class='id identifier rubyid_add_env_bindings'>add_env_bindings</span>
327
325
  <span class='const'>ENV</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='kw'>do</span>
@@ -344,7 +342,7 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
344
342
  <div class="method_details ">
345
343
  <h3 class="signature " id="define_type-class_method">
346
344
 
347
- .<strong>define_type</strong>(name, options = {}) { ... } &#x21d2; <tt>nil</tt>
345
+ .<strong>define_type</strong>(name, options = {}) {|value| ... } &#x21d2; <tt>nil</tt>
348
346
 
349
347
 
350
348
 
@@ -353,8 +351,8 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
353
351
  </h3><div class="docstring">
354
352
  <div class="discussion">
355
353
 
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>
354
+ <p>Defines a new type for use as the “as” option on a subsequent <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span> or
355
+ <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> call.</p>
358
356
 
359
357
 
360
358
  </div>
@@ -425,14 +423,16 @@ is equivalent to <a href="'XYZ'">EnvParser.parse(ENV</a>, …)</p>
425
423
  <span class="type">(<tt>Object</tt>)</span>
426
424
  <span class="default">
427
425
 
426
+ &mdash; default:
427
+ <tt>nil</tt>
428
+
428
429
  </span>
429
430
 
430
431
  &mdash; <div class='inline'>
431
432
  <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>
433
+ parsed (via <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span> or <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span>) is either unset (<code>nil</code>) or
434
+ blank (<code>&#39;&#39;</code>). Note this may be overridden by the user
435
+ via the <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>/<span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> “if_unset” option.</p>
436
436
  </div>
437
437
 
438
438
  </li>
@@ -446,24 +446,23 @@ overridden by the user via the <code>.parse</code>/<code>.register</code>
446
446
  <li>
447
447
 
448
448
 
449
- <span class='type'></span>
449
+ <span class='type'>(<tt>value</tt>)</span>
450
450
 
451
451
 
452
452
 
453
-
453
+ &mdash;
454
454
  <div class='inline'>
455
455
  <p>A block to act as the parser for the this type. If no block is given, an
456
456
  ArgumentError is raised.</p>
457
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>
458
+ <p>When the type defined is used via a <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>/<span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> call, this block
459
+ is invoked with the value to be parsed. Said value is guaranteed to be a
460
+ non-empty String (the “if_unset” check will have already run), but no other
461
+ assurances as to content are given. The block should return the final
462
+ output of parsing the given String value as the type being defined.</p>
464
463
 
465
464
  <p>If the value given cannot be sensibly parsed into the type defined, the
466
- block should raise an EnvParser::ValueNotAllowed exception.</p>
465
+ block should raise an <span class='object_link'><a href="EnvParser/ValueNotConvertibleError.html" title="EnvParser::ValueNotConvertibleError (class)">ValueNotConvertibleError</a></span>.</p>
467
466
  </div>
468
467
 
469
468
  </li>
@@ -493,7 +492,7 @@ block should raise an EnvParser::ValueNotAllowed exception.</p>
493
492
  <li>
494
493
 
495
494
 
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>
495
+ <span class='type'>(<tt>ArgumentError</tt>, <tt><span class='object_link'><a href="EnvParser/TypeAlreadyDefinedError.html" title="EnvParser::TypeAlreadyDefinedError (class)">EnvParser::TypeAlreadyDefinedError</a></span></tt>)</span>
497
496
 
498
497
 
499
498
 
@@ -507,31 +506,31 @@ block should raise an EnvParser::ValueNotAllowed exception.</p>
507
506
  <pre class="lines">
508
507
 
509
508
 
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>
509
+ 39
510
+ 40
511
+ 41
512
+ 42
513
+ 43
514
+ 44
515
+ 45
516
+ 46
517
+ 47
518
+ 48
519
+ 49
520
+ 50
521
+ 51
522
+ 52
523
+ 53</pre>
525
524
  </td>
526
525
  <td>
527
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 53</span>
526
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 39</span>
528
527
 
529
528
  <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
529
  <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
530
 
532
531
  <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
532
  <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>
533
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="EnvParser/TypeAlreadyDefinedError.html" title="EnvParser::TypeAlreadyDefinedError (class)">TypeAlreadyDefinedError</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
534
 
536
535
  <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
536
  <span class='label'>parser:</span> <span class='id identifier rubyid_parser'>parser</span><span class='comma'>,</span>
@@ -624,8 +623,9 @@ be used.</p>
624
623
  <p>The expected return type. A best-effort attempt is made to convert the
625
624
  source String to the requested type.</p>
626
625
 
627
- <p>If no “as” option is given (or the “as” value given has not been defined),
628
- an ArgumentError exception is raised.</p>
626
+ <p>If no “as” option is given, an ArgumentError is raised. If the “as” option
627
+ given is unknown (the given type has not been previously defined via
628
+ <span class='object_link'><a href="#define_type-class_method" title="EnvParser.define_type (method)">define_type</a></span>), an <span class='object_link'><a href="EnvParser/UnknownTypeError.html" title="EnvParser::UnknownTypeError (class)">UnknownTypeError</a></span> is raised.</p>
629
629
  </div>
630
630
 
631
631
  </li>
@@ -658,7 +658,7 @@ type.</p>
658
658
  &mdash; <div class='inline'>
659
659
  <p>Gives a limited set of allowed values (after type conversion). If, after
660
660
  parsing, the final value is not included in the “from_set” list/range, an
661
- EnvParser::ValueNotAllowed exception is raised.</p>
661
+ <span class='object_link'><a href="EnvParser/ValueNotAllowedError.html" title="EnvParser::ValueNotAllowedError (class)">ValueNotAllowedError</a></span> is raised.</p>
662
662
 
663
663
  <p>Note that if the “if_unset” option is given and the value to parse is
664
664
  <code>nil</code>/<code>&#39;&#39;</code>, the “if_unset” value will be
@@ -667,7 +667,7 @@ returned, even if it is not part of the “from_set” list/range.</p>
667
667
  <p>Also note that, due to the nature of the lookup, the “from_set” option is
668
668
  only available for scalar values (i.e. not arrays, hashes, or other
669
669
  enumerables). An attempt to use the “from_set” option with a non-scalar
670
- value will raise an ArgumentError exception.</p>
670
+ value will raise an ArgumentError.</p>
671
671
  </div>
672
672
 
673
673
  </li>
@@ -680,16 +680,16 @@ value will raise an ArgumentError exception.</p>
680
680
  </span>
681
681
 
682
682
  &mdash; <div class='inline'>
683
- <p>If given, the “validated_by” proc is called with the parsed value (after
683
+ <p>If given, the “validated_by” Proc is called with the parsed value (after
684
684
  type conversion) as its sole argument. This allows for user-defined
685
685
  validation of the parsed value beyond what can be enforced by use of the
686
- “from_set” option alone. If the proc&#39;s return value is
687
- <code>#blank?</code>, an EnvParser::ValueNotAllowed exception is raised. To
688
- accomodate your syntax of choice, this validation proc may be given as a
689
- yield block instead.</p>
686
+ “from_set” option alone. If the Proc&#39;s return value is
687
+ <code>#blank?</code>, an <span class='object_link'><a href="EnvParser/ValueNotAllowedError.html" title="EnvParser::ValueNotAllowedError (class)">ValueNotAllowedError</a></span> is raised. To
688
+ accomodate your syntax of choice, this validation Proc may be given as a
689
+ block instead.</p>
690
690
 
691
691
  <p>Note that this option is intended to provide an inspection mechanism only –
692
- no mutation of the parsed value should occur within the given proc. To that
692
+ no mutation of the parsed value should occur within the given Proc. To that
693
693
  end, the argument passed is a <em>frozen</em> duplicate of the parsed
694
694
  value.</p>
695
695
  </div>
@@ -711,9 +711,10 @@ value.</p>
711
711
 
712
712
  &mdash;
713
713
  <div class='inline'>
714
- <p>A block (if given) is treated exactly as the “validated_by” Proc would.
715
- Although there is no compelling reason to provide both a “validated_by”
716
- proc <em>and</em> a validation block, there is no technical limitation
714
+ <p>A block (if given) is treated exactly as the “validated_by” Proc would.</p>
715
+
716
+ <p>Although there is no compelling reason to provide both a “validated_by”
717
+ Proc <em>and</em> a validation block, there is no technical limitation
717
718
  preventing this. <strong>If both are given, both validation checks must
718
719
  pass.</strong></p>
719
720
  </div>
@@ -727,7 +728,7 @@ pass.</strong></p>
727
728
  <li>
728
729
 
729
730
 
730
- <span class='type'>(<tt>ArgumentError</tt>, <tt><span class='object_link'><a href="EnvParser/ValueNotAllowed.html" title="EnvParser::ValueNotAllowed (class)">EnvParser::ValueNotAllowed</a></span></tt>)</span>
731
+ <span class='type'>(<tt>ArgumentError</tt>, <tt><span class='object_link'><a href="EnvParser/UnknownTypeError.html" title="EnvParser::UnknownTypeError (class)">EnvParser::UnknownTypeError</a></span></tt>, <tt><span class='object_link'><a href="EnvParser/ValueNotAllowedError.html" title="EnvParser::ValueNotAllowedError (class)">EnvParser::ValueNotAllowedError</a></span></tt>)</span>
731
732
 
732
733
 
733
734
 
@@ -741,31 +742,33 @@ pass.</strong></p>
741
742
  <pre class="lines">
742
743
 
743
744
 
745
+ 107
746
+ 108
747
+ 109
748
+ 110
749
+ 111
750
+ 112
751
+ 113
752
+ 114
753
+ 115
754
+ 116
755
+ 117
756
+ 118
744
757
  119
745
758
  120
746
759
  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>
760
+ 122</pre>
759
761
  </td>
760
762
  <td>
761
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 119</span>
763
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 107</span>
762
764
 
763
765
  <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>
764
766
  <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>
765
767
  <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>
766
768
 
767
769
  <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>
770
+ <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'>missing `as` parameter</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>unless</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'>:as</span><span class='rparen'>)</span>
771
+ <span class='id identifier rubyid_raise'>raise</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="EnvParser/UnknownTypeError.html" title="EnvParser::UnknownTypeError (class)">UnknownTypeError</a></span></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>
769
772
 
770
773
  <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>
771
774
 
@@ -795,9 +798,9 @@ pass.</strong></p>
795
798
  <p>Parses the referenced value and creates a matching constant in the
796
799
  requested context.</p>
797
800
 
798
- <p>Multiple calls to register may be shortcutted by passing in a Hash with
799
- the same keys as those in the “from” Hash and each value being the
800
- “register” options set for each variable&#39;s register call.</p>
801
+ <p>Multiple calls to <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> may be shortcutted by passing in a Hash whose
802
+ keys are the variable names and whose values are the options set for each
803
+ variable&#39;s <span class='object_link'><a href="#register-class_method" title="EnvParser.register (method)">register</a></span> call.</p>
801
804
  <pre class="code ruby"><code class="ruby">
802
805
  ## Example shortcut usage:
803
806
 
@@ -830,8 +833,8 @@ the same keys as those in the “from” Hash and each value being the
830
833
  &mdash;
831
834
  <div class='inline'>
832
835
  <p>The name of the value to parse/interpret from the “from” Hash. If the
833
- “from” value is ENV, you may give a Symbol and the corresponding String key
834
- will be used instead.</p>
836
+ “from” value is <code>ENV</code>, you may give a Symbol and the
837
+ corresponding String key will be used instead.</p>
835
838
  </div>
836
839
 
837
840
  </li>
@@ -869,11 +872,13 @@ will be used instead.</p>
869
872
  <span class="type">(<tt>Hash</tt>)</span>
870
873
  <span class="default">
871
874
 
875
+ &mdash; default:
876
+ <tt>ENV</tt>
877
+
872
878
  </span>
873
879
 
874
880
  &mdash; <div class='inline'>
875
- <p>The source Hash from which to pull the value referenced by the “name” key.
876
- Defaults to ENV.</p>
881
+ <p>The source Hash from which to pull the value referenced by the “name” key.</p>
877
882
  </div>
878
883
 
879
884
  </li>
@@ -883,11 +888,14 @@ Defaults to ENV.</p>
883
888
  <span class="type">(<tt>Module</tt>, <tt>Class</tt>)</span>
884
889
  <span class="default">
885
890
 
891
+ &mdash; default:
892
+ <tt>Kernel</tt>
893
+
886
894
  </span>
887
895
 
888
896
  &mdash; <div class='inline'>
889
- <p>The module or class in which the constant should be created. Defaults to
890
- Kernel (making it a global constant).</p>
897
+ <p>The module or class in which the constant should be created. Creates global
898
+ constants by default.</p>
891
899
  </div>
892
900
 
893
901
  </li>
@@ -900,7 +908,7 @@ Kernel (making it a global constant).</p>
900
908
  </span>
901
909
 
902
910
  &mdash; <div class='inline'>
903
- <p>See <code>.parse</code>.</p>
911
+ <p>See <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>.</p>
904
912
  </div>
905
913
 
906
914
  </li>
@@ -913,7 +921,7 @@ Kernel (making it a global constant).</p>
913
921
  </span>
914
922
 
915
923
  &mdash; <div class='inline'>
916
- <p>See <code>.parse</code>.</p>
924
+ <p>See <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>.</p>
917
925
  </div>
918
926
 
919
927
  </li>
@@ -926,7 +934,7 @@ Kernel (making it a global constant).</p>
926
934
  </span>
927
935
 
928
936
  &mdash; <div class='inline'>
929
- <p>See <code>.parse</code>.</p>
937
+ <p>See <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>.</p>
930
938
  </div>
931
939
 
932
940
  </li>
@@ -939,7 +947,7 @@ Kernel (making it a global constant).</p>
939
947
  </span>
940
948
 
941
949
  &mdash; <div class='inline'>
942
- <p>See <code>.parse</code>.</p>
950
+ <p>See <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>.</p>
943
951
  </div>
944
952
 
945
953
  </li>
@@ -959,10 +967,9 @@ Kernel (making it a global constant).</p>
959
967
 
960
968
  &mdash;
961
969
  <div class='inline'>
962
- <p>A block (if given) is treated exactly as in <code>.parse</code>. Note,
963
- however, that a single yield block cannot be used to register multiple
964
- constants simultaneously – each value needing validation must give its own
965
- “validated_by” proc.</p>
970
+ <p>A block (if given) is treated exactly as in <span class='object_link'><a href="#parse-class_method" title="EnvParser.parse (method)">parse</a></span>. Note, however, that a
971
+ single block cannot be used to register multiple constants simultaneously –
972
+ each value needing validation must give its own “validated_by” Proc.</p>
966
973
  </div>
967
974
 
968
975
  </li>
@@ -988,6 +995,18 @@ constants simultaneously – each value needing validation must give its own
988
995
  <pre class="lines">
989
996
 
990
997
 
998
+ 173
999
+ 174
1000
+ 175
1001
+ 176
1002
+ 177
1003
+ 178
1004
+ 179
1005
+ 180
1006
+ 181
1007
+ 182
1008
+ 183
1009
+ 184
991
1010
  185
992
1011
  186
993
1012
  187
@@ -1008,29 +1027,15 @@ constants simultaneously – each value needing validation must give its own
1008
1027
  202
1009
1028
  203
1010
1029
  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>
1030
+ 205</pre>
1025
1031
  </td>
1026
1032
  <td>
1027
- <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 185</span>
1033
+ <pre class="code"><span class="info file"># File 'lib/env_parser.rb', line 173</span>
1028
1034
 
1029
1035
  <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>
1030
- <span class='comment'>## We want to allow for registering multiple variables simultaneously via a single `.register`
1031
- </span> <span class='comment'>## method call.
1036
+ <span class='comment'>## Allow for registering multiple variables simultaneously via a single call.
1032
1037
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>Hash</span>
1033
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>cannot register multiple values with one yield block</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
1038
+ <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'>cannot register multiple values with one block</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
1034
1039
  <span class='kw'>return</span> <span class='id identifier rubyid_register_all'>register_all</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
1035
1040
  <span class='kw'>end</span>
1036
1041
 
@@ -1070,7 +1075,7 @@ constants simultaneously – each value needing validation must give its own
1070
1075
  </div>
1071
1076
 
1072
1077
  <div id="footer">
1073
- Generated on Sun Dec 24 19:33:35 2017 by
1078
+ Generated on Mon Dec 25 19:13:02 2017 by
1074
1079
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1075
1080
  0.9.11 (ruby-2.4.2).
1076
1081
  </div>