hash_params 0.0.2 → 2.0.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 +4 -4
- data/Gemfile.lock +8 -8
- data/README.md +167 -109
- data/coverage/assets/0.9.0/application.css +799 -0
- data/coverage/assets/0.9.0/application.js +1707 -0
- data/coverage/assets/0.9.0/colorbox/border.png +0 -0
- data/coverage/assets/0.9.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.9.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.9.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.9.0/favicon_green.png +0 -0
- data/coverage/assets/0.9.0/favicon_red.png +0 -0
- data/coverage/assets/0.9.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.9.0/loading.gif +0 -0
- data/coverage/assets/0.9.0/magnify.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.9.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +1597 -369
- data/hash_params.gemspec +14 -5
- data/lib/hash_params/binding_validator.rb +26 -0
- data/lib/hash_params/hash_validator.rb +71 -0
- data/lib/hash_params/validator.rb +119 -0
- data/lib/hash_params/yaml_params.rb +93 -0
- data/lib/hash_params.rb +15 -142
- data/spec/hash_params_spec.rb +100 -63
- data/spec/spec_helper.rb +0 -11
- data/tmp/hash_params.rb +181 -0
- data/tmp/hash_params_spec.rb +102 -0
- data/tmp/module_spec.rb +27 -0
- data/tmp/var_spec.rb +9 -0
- data/tmp/yaml_params.rb +109 -0
- metadata +36 -3
data/coverage/index.html
CHANGED
@@ -3,38 +3,38 @@
|
|
3
3
|
<head>
|
4
4
|
<title>Code coverage for Hash param</title>
|
5
5
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
-
<script src='./assets/0.
|
7
|
-
<link href='./assets/0.
|
8
|
-
<link rel="shortcut icon" type="image/png" href="./assets/0.
|
9
|
-
<link rel="icon" type="image/png" href="./assets/0.
|
6
|
+
<script src='./assets/0.9.0/application.js' type='text/javascript'></script>
|
7
|
+
<link href='./assets/0.9.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="./assets/0.9.0/favicon_red.png" />
|
9
|
+
<link rel="icon" type="image/png" href="./assets/0.9.0/favicon.png" />
|
10
10
|
</head>
|
11
11
|
|
12
12
|
<body>
|
13
13
|
<div id="loading">
|
14
|
-
<img src="./assets/0.
|
14
|
+
<img src="./assets/0.9.0/loading.gif" alt="loading"/>
|
15
15
|
</div>
|
16
16
|
<div id="wrapper" style="display:none;">
|
17
|
-
<div class="timestamp">Generated <abbr class="timeago" title="
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2015-05-19T14:23:50+12:00">2015-05-19T14:23:50+12:00</abbr></div>
|
18
18
|
<ul class="group_tabs"></ul>
|
19
19
|
|
20
20
|
<div id="content">
|
21
21
|
<div class="file_list_container" id="AllFiles">
|
22
22
|
<h2>
|
23
23
|
<span class="group_name">All Files</span>
|
24
|
-
(<span class="covered_percent"><span class="
|
24
|
+
(<span class="covered_percent"><span class="red">75.16%</span></span>
|
25
25
|
covered at
|
26
26
|
<span class="covered_strength">
|
27
27
|
<span class="green">
|
28
|
-
|
28
|
+
4.61
|
29
29
|
</span>
|
30
30
|
</span> hits/line)
|
31
31
|
</h2>
|
32
32
|
<a name="AllFiles"></a>
|
33
33
|
<div>
|
34
|
-
<b>
|
35
|
-
<b>
|
36
|
-
<span class="green"><b>
|
37
|
-
<span class="red"><b>
|
34
|
+
<b>5</b> files in total.
|
35
|
+
<b>161</b> relevant lines.
|
36
|
+
<span class="green"><b>121</b> lines covered</span> and
|
37
|
+
<span class="red"><b>40</b> lines missed </span>
|
38
38
|
</div>
|
39
39
|
<table class="file_list">
|
40
40
|
<thead>
|
@@ -51,13 +51,53 @@
|
|
51
51
|
<tbody>
|
52
52
|
|
53
53
|
<tr>
|
54
|
-
<td class="strong"><a href="#
|
55
|
-
<td class="green strong">
|
56
|
-
<td>
|
57
|
-
<td>
|
58
|
-
<td>
|
59
|
-
<td>
|
60
|
-
<td>
|
54
|
+
<td class="strong"><a href="#32ada782cad1cca43940fc5c8a722f32fd765f14" class="src_link" title="lib/hash_params.rb">lib/hash_params.rb</a></td>
|
55
|
+
<td class="green strong">100.0 %</td>
|
56
|
+
<td>21</td>
|
57
|
+
<td>12</td>
|
58
|
+
<td>12</td>
|
59
|
+
<td>0</td>
|
60
|
+
<td>1.0</td>
|
61
|
+
</tr>
|
62
|
+
|
63
|
+
<tr>
|
64
|
+
<td class="strong"><a href="#b1c546b2a036367cd6714d1a3d80305afff21484" class="src_link" title="lib/hash_params/binding_validator.rb">lib/hash_params/binding_validator.rb</a></td>
|
65
|
+
<td class="green strong">92.86 %</td>
|
66
|
+
<td>26</td>
|
67
|
+
<td>14</td>
|
68
|
+
<td>13</td>
|
69
|
+
<td>1</td>
|
70
|
+
<td>1.9</td>
|
71
|
+
</tr>
|
72
|
+
|
73
|
+
<tr>
|
74
|
+
<td class="strong"><a href="#f3376cb3f02016b662bfae7b7507dfdf1e033e63" class="src_link" title="lib/hash_params/hash_validator.rb">lib/hash_params/hash_validator.rb</a></td>
|
75
|
+
<td class="green strong">97.37 %</td>
|
76
|
+
<td>71</td>
|
77
|
+
<td>38</td>
|
78
|
+
<td>37</td>
|
79
|
+
<td>1</td>
|
80
|
+
<td>2.8</td>
|
81
|
+
</tr>
|
82
|
+
|
83
|
+
<tr>
|
84
|
+
<td class="strong"><a href="#f39507e800e8d660c679f1092f4a3b699ac789cb" class="src_link" title="lib/hash_params/validator.rb">lib/hash_params/validator.rb</a></td>
|
85
|
+
<td class="green strong">94.74 %</td>
|
86
|
+
<td>119</td>
|
87
|
+
<td>57</td>
|
88
|
+
<td>54</td>
|
89
|
+
<td>3</td>
|
90
|
+
<td>10.4</td>
|
91
|
+
</tr>
|
92
|
+
|
93
|
+
<tr>
|
94
|
+
<td class="strong"><a href="#abb09c4ec783968d5f7a1a3adac854712f21ee1e" class="src_link" title="lib/hash_params/yaml_params.rb">lib/hash_params/yaml_params.rb</a></td>
|
95
|
+
<td class="red strong">12.5 %</td>
|
96
|
+
<td>93</td>
|
97
|
+
<td>40</td>
|
98
|
+
<td>5</td>
|
99
|
+
<td>35</td>
|
100
|
+
<td>0.1</td>
|
61
101
|
</tr>
|
62
102
|
|
63
103
|
</tbody>
|
@@ -69,21 +109,21 @@
|
|
69
109
|
</div>
|
70
110
|
|
71
111
|
<div id="footer">
|
72
|
-
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.
|
73
|
-
and simplecov-html v0.
|
112
|
+
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.2
|
113
|
+
and simplecov-html v0.9.0<br/>
|
74
114
|
using RSpec
|
75
115
|
</div>
|
76
116
|
|
77
117
|
<div class="source_files">
|
78
118
|
|
79
|
-
<div class="source_table" id="
|
119
|
+
<div class="source_table" id="32ada782cad1cca43940fc5c8a722f32fd765f14">
|
80
120
|
<div class="header">
|
81
121
|
<h3>lib/hash_params.rb</h3>
|
82
|
-
<h4><span class="green">
|
122
|
+
<h4><span class="green">100.0 %</span> covered</h4>
|
83
123
|
<div>
|
84
|
-
<b>
|
85
|
-
<span class="green"><b>
|
86
|
-
<span class="red"><b>
|
124
|
+
<b>12</b> relevant lines.
|
125
|
+
<span class="green"><b>12</b> lines covered</span> and
|
126
|
+
<span class="red"><b>0</b> lines missed.</span>
|
87
127
|
</div>
|
88
128
|
</div>
|
89
129
|
|
@@ -93,19 +133,19 @@
|
|
93
133
|
<li class="covered" data-hits="1" data-linenumber="1">
|
94
134
|
<span class="hits">1</span>
|
95
135
|
|
96
|
-
<code class="ruby">
|
136
|
+
<code class="ruby">require 'yaml'</code>
|
97
137
|
</li>
|
98
138
|
|
99
139
|
<li class="covered" data-hits="1" data-linenumber="2">
|
100
140
|
<span class="hits">1</span>
|
101
141
|
|
102
|
-
<code class="ruby">
|
142
|
+
<code class="ruby">require 'erb'</code>
|
103
143
|
</li>
|
104
144
|
|
105
145
|
<li class="covered" data-hits="1" data-linenumber="3">
|
106
146
|
<span class="hits">1</span>
|
107
147
|
|
108
|
-
<code class="ruby">
|
148
|
+
<code class="ruby">require 'socket'</code>
|
109
149
|
</li>
|
110
150
|
|
111
151
|
<li class="never" data-hits="" data-linenumber="4">
|
@@ -114,841 +154,2029 @@
|
|
114
154
|
<code class="ruby"></code>
|
115
155
|
</li>
|
116
156
|
|
157
|
+
<li class="never" data-hits="" data-linenumber="5">
|
158
|
+
|
159
|
+
|
160
|
+
<code class="ruby"></code>
|
161
|
+
</li>
|
162
|
+
|
163
|
+
<li class="covered" data-hits="1" data-linenumber="6">
|
164
|
+
<span class="hits">1</span>
|
165
|
+
|
166
|
+
<code class="ruby">require_relative 'hash_params/hash_validator'</code>
|
167
|
+
</li>
|
168
|
+
|
169
|
+
<li class="covered" data-hits="1" data-linenumber="7">
|
170
|
+
<span class="hits">1</span>
|
171
|
+
|
172
|
+
<code class="ruby">require_relative 'hash_params/validator'</code>
|
173
|
+
</li>
|
174
|
+
|
175
|
+
<li class="covered" data-hits="1" data-linenumber="8">
|
176
|
+
<span class="hits">1</span>
|
177
|
+
|
178
|
+
<code class="ruby">require_relative 'hash_params/binding_validator'</code>
|
179
|
+
</li>
|
180
|
+
|
181
|
+
<li class="covered" data-hits="1" data-linenumber="9">
|
182
|
+
<span class="hits">1</span>
|
183
|
+
|
184
|
+
<code class="ruby">module HashParams</code>
|
185
|
+
</li>
|
186
|
+
|
187
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
188
|
+
<span class="hits">1</span>
|
189
|
+
|
190
|
+
<code class="ruby"> ENVIRONMENT = ENV['HASH_PARAMS_ENV'] || (defined?(Rails) && Rails.env) || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'</code>
|
191
|
+
</li>
|
192
|
+
|
193
|
+
<li class="covered" data-hits="1" data-linenumber="11">
|
194
|
+
<span class="hits">1</span>
|
195
|
+
|
196
|
+
<code class="ruby"> VERSION = '2.0.0'</code>
|
197
|
+
</li>
|
198
|
+
|
199
|
+
<li class="covered" data-hits="1" data-linenumber="12">
|
200
|
+
<span class="hits">1</span>
|
201
|
+
|
202
|
+
<code class="ruby"> extend HashParams::Validator</code>
|
203
|
+
</li>
|
204
|
+
|
205
|
+
<li class="never" data-hits="" data-linenumber="13">
|
206
|
+
|
207
|
+
|
208
|
+
<code class="ruby">end</code>
|
209
|
+
</li>
|
210
|
+
|
211
|
+
<li class="never" data-hits="" data-linenumber="14">
|
212
|
+
|
213
|
+
|
214
|
+
<code class="ruby"></code>
|
215
|
+
</li>
|
216
|
+
|
217
|
+
<li class="covered" data-hits="1" data-linenumber="15">
|
218
|
+
<span class="hits">1</span>
|
219
|
+
|
220
|
+
<code class="ruby">require_relative 'hash_params/yaml_params'</code>
|
221
|
+
</li>
|
222
|
+
|
223
|
+
<li class="covered" data-hits="1" data-linenumber="16">
|
224
|
+
<span class="hits">1</span>
|
225
|
+
|
226
|
+
<code class="ruby">require 'pry' if HashParams::ENVIRONMENT == 'development'</code>
|
227
|
+
</li>
|
228
|
+
|
229
|
+
<li class="never" data-hits="" data-linenumber="17">
|
230
|
+
|
231
|
+
|
232
|
+
<code class="ruby"></code>
|
233
|
+
</li>
|
234
|
+
|
235
|
+
<li class="never" data-hits="" data-linenumber="18">
|
236
|
+
|
237
|
+
|
238
|
+
<code class="ruby"></code>
|
239
|
+
</li>
|
240
|
+
|
241
|
+
<li class="never" data-hits="" data-linenumber="19">
|
242
|
+
|
243
|
+
|
244
|
+
<code class="ruby"></code>
|
245
|
+
</li>
|
246
|
+
|
247
|
+
<li class="never" data-hits="" data-linenumber="20">
|
248
|
+
|
249
|
+
|
250
|
+
<code class="ruby"></code>
|
251
|
+
</li>
|
252
|
+
|
253
|
+
<li class="never" data-hits="" data-linenumber="21">
|
254
|
+
|
255
|
+
|
256
|
+
<code class="ruby"></code>
|
257
|
+
</li>
|
258
|
+
|
259
|
+
</ol>
|
260
|
+
</pre>
|
261
|
+
</div>
|
262
|
+
|
263
|
+
<div class="source_table" id="b1c546b2a036367cd6714d1a3d80305afff21484">
|
264
|
+
<div class="header">
|
265
|
+
<h3>lib/hash_params/binding_validator.rb</h3>
|
266
|
+
<h4><span class="green">92.86 %</span> covered</h4>
|
267
|
+
<div>
|
268
|
+
<b>14</b> relevant lines.
|
269
|
+
<span class="green"><b>13</b> lines covered</span> and
|
270
|
+
<span class="red"><b>1</b> lines missed.</span>
|
271
|
+
</div>
|
272
|
+
</div>
|
273
|
+
|
274
|
+
<pre>
|
275
|
+
<ol>
|
276
|
+
|
277
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
278
|
+
<span class="hits">1</span>
|
279
|
+
|
280
|
+
<code class="ruby">module HashParams</code>
|
281
|
+
</li>
|
282
|
+
|
283
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
284
|
+
<span class="hits">1</span>
|
285
|
+
|
286
|
+
<code class="ruby"> class BindingValidator</code>
|
287
|
+
</li>
|
288
|
+
|
289
|
+
<li class="never" data-hits="" data-linenumber="3">
|
290
|
+
|
291
|
+
|
292
|
+
<code class="ruby"></code>
|
293
|
+
</li>
|
294
|
+
|
295
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
296
|
+
<span class="hits">1</span>
|
297
|
+
|
298
|
+
<code class="ruby"> def with_binding (&code)</code>
|
299
|
+
</li>
|
300
|
+
|
117
301
|
<li class="covered" data-hits="1" data-linenumber="5">
|
118
302
|
<span class="hits">1</span>
|
119
303
|
|
120
|
-
<code class="ruby">
|
304
|
+
<code class="ruby"> @binding = code.binding</code>
|
121
305
|
</li>
|
122
306
|
|
123
|
-
<li class="covered" data-hits="
|
124
|
-
<span class="hits">
|
307
|
+
<li class="covered" data-hits="1" data-linenumber="6">
|
308
|
+
<span class="hits">1</span>
|
125
309
|
|
126
|
-
<code class="ruby">
|
310
|
+
<code class="ruby"> instance_eval(&code)</code>
|
127
311
|
</li>
|
128
312
|
|
129
|
-
<li class="
|
130
|
-
|
313
|
+
<li class="never" data-hits="" data-linenumber="7">
|
314
|
+
|
131
315
|
|
132
|
-
<code class="ruby">
|
316
|
+
<code class="ruby"> end</code>
|
133
317
|
</li>
|
134
318
|
|
135
319
|
<li class="never" data-hits="" data-linenumber="8">
|
136
320
|
|
137
321
|
|
138
|
-
<code class="ruby"
|
322
|
+
<code class="ruby"></code>
|
323
|
+
</li>
|
324
|
+
|
325
|
+
<li class="never" data-hits="" data-linenumber="9">
|
326
|
+
|
327
|
+
|
328
|
+
<code class="ruby"></code>
|
139
329
|
</li>
|
140
330
|
|
141
|
-
<li class="covered" data-hits="
|
142
|
-
<span class="hits">
|
331
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
332
|
+
<span class="hits">1</span>
|
143
333
|
|
144
|
-
<code class="ruby">
|
334
|
+
<code class="ruby"> def var(var_name, type, opts={})</code>
|
145
335
|
</li>
|
146
336
|
|
147
|
-
<li class="covered" data-hits="
|
148
|
-
<span class="hits">
|
337
|
+
<li class="covered" data-hits="4" data-linenumber="11">
|
338
|
+
<span class="hits">4</span>
|
149
339
|
|
150
|
-
<code class="ruby">
|
340
|
+
<code class="ruby"> raise 'Variable name must be a string or symbol' unless (var_name.is_a?(String) || var_name.is_a?(Symbol))</code>
|
151
341
|
</li>
|
152
342
|
|
153
|
-
<li class="covered" data-hits="
|
154
|
-
<span class="hits">
|
343
|
+
<li class="covered" data-hits="4" data-linenumber="12">
|
344
|
+
<span class="hits">4</span>
|
155
345
|
|
156
|
-
<code class="ruby">
|
346
|
+
<code class="ruby"> value = @binding.local_variable_get var_name</code>
|
157
347
|
</li>
|
158
348
|
|
159
|
-
<li class="
|
349
|
+
<li class="covered" data-hits="4" data-linenumber="13">
|
350
|
+
<span class="hits">4</span>
|
351
|
+
|
352
|
+
<code class="ruby"> new_value = if value.is_a?(Hash)</code>
|
353
|
+
</li>
|
354
|
+
|
355
|
+
<li class="covered" data-hits="1" data-linenumber="14">
|
356
|
+
<span class="hits">1</span>
|
357
|
+
|
358
|
+
<code class="ruby"> if block_given?</code>
|
359
|
+
</li>
|
360
|
+
|
361
|
+
<li class="never" data-hits="" data-linenumber="15">
|
362
|
+
|
363
|
+
|
364
|
+
<code class="ruby"> #if the param is a hash then the validations are actually options</code>
|
365
|
+
</li>
|
366
|
+
|
367
|
+
<li class="covered" data-hits="1" data-linenumber="16">
|
368
|
+
<span class="hits">1</span>
|
369
|
+
|
370
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(value, opts, &Proc.new)</code>
|
371
|
+
</li>
|
372
|
+
|
373
|
+
<li class="never" data-hits="" data-linenumber="17">
|
374
|
+
|
375
|
+
|
376
|
+
<code class="ruby"> else</code>
|
377
|
+
</li>
|
378
|
+
|
379
|
+
<li class="missed" data-hits="0" data-linenumber="18">
|
380
|
+
|
381
|
+
|
382
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(value, opts)</code>
|
383
|
+
</li>
|
384
|
+
|
385
|
+
<li class="never" data-hits="" data-linenumber="19">
|
386
|
+
|
387
|
+
|
388
|
+
<code class="ruby"> end</code>
|
389
|
+
</li>
|
390
|
+
|
391
|
+
<li class="never" data-hits="" data-linenumber="20">
|
392
|
+
|
393
|
+
|
394
|
+
<code class="ruby"> else</code>
|
395
|
+
</li>
|
396
|
+
|
397
|
+
<li class="covered" data-hits="3" data-linenumber="21">
|
398
|
+
<span class="hits">3</span>
|
399
|
+
|
400
|
+
<code class="ruby"> HashParams.validate value, type, opts</code>
|
401
|
+
</li>
|
402
|
+
|
403
|
+
<li class="never" data-hits="" data-linenumber="22">
|
404
|
+
|
405
|
+
|
406
|
+
<code class="ruby"> end</code>
|
407
|
+
</li>
|
408
|
+
|
409
|
+
<li class="covered" data-hits="4" data-linenumber="23">
|
410
|
+
<span class="hits">4</span>
|
411
|
+
|
412
|
+
<code class="ruby"> @binding.local_variable_set var_name, new_value</code>
|
413
|
+
</li>
|
414
|
+
|
415
|
+
<li class="never" data-hits="" data-linenumber="24">
|
416
|
+
|
417
|
+
|
418
|
+
<code class="ruby"> end</code>
|
419
|
+
</li>
|
420
|
+
|
421
|
+
<li class="never" data-hits="" data-linenumber="25">
|
160
422
|
|
161
423
|
|
162
424
|
<code class="ruby"> end</code>
|
163
425
|
</li>
|
164
426
|
|
165
|
-
<li class="never" data-hits="" data-linenumber="
|
427
|
+
<li class="never" data-hits="" data-linenumber="26">
|
428
|
+
|
429
|
+
|
430
|
+
<code class="ruby">end</code>
|
431
|
+
</li>
|
432
|
+
|
433
|
+
</ol>
|
434
|
+
</pre>
|
435
|
+
</div>
|
436
|
+
|
437
|
+
<div class="source_table" id="f3376cb3f02016b662bfae7b7507dfdf1e033e63">
|
438
|
+
<div class="header">
|
439
|
+
<h3>lib/hash_params/hash_validator.rb</h3>
|
440
|
+
<h4><span class="green">97.37 %</span> covered</h4>
|
441
|
+
<div>
|
442
|
+
<b>38</b> relevant lines.
|
443
|
+
<span class="green"><b>37</b> lines covered</span> and
|
444
|
+
<span class="red"><b>1</b> lines missed.</span>
|
445
|
+
</div>
|
446
|
+
</div>
|
447
|
+
|
448
|
+
<pre>
|
449
|
+
<ol>
|
450
|
+
|
451
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
452
|
+
<span class="hits">1</span>
|
453
|
+
|
454
|
+
<code class="ruby">module HashParams</code>
|
455
|
+
</li>
|
456
|
+
|
457
|
+
<li class="never" data-hits="" data-linenumber="2">
|
166
458
|
|
167
459
|
|
168
460
|
<code class="ruby"></code>
|
169
461
|
</li>
|
170
462
|
|
171
|
-
<li class="
|
463
|
+
<li class="never" data-hits="" data-linenumber="3">
|
464
|
+
|
465
|
+
|
466
|
+
<code class="ruby"></code>
|
467
|
+
</li>
|
468
|
+
|
469
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
172
470
|
<span class="hits">1</span>
|
173
471
|
|
174
|
-
<code class="ruby">
|
472
|
+
<code class="ruby"> class HPHash < Hash</code>
|
473
|
+
</li>
|
474
|
+
|
475
|
+
<li class="covered" data-hits="1" data-linenumber="5">
|
476
|
+
<span class="hits">1</span>
|
477
|
+
|
478
|
+
<code class="ruby"> attr_accessor :validation_errors</code>
|
479
|
+
</li>
|
480
|
+
|
481
|
+
<li class="never" data-hits="" data-linenumber="6">
|
482
|
+
|
483
|
+
|
484
|
+
<code class="ruby"></code>
|
485
|
+
</li>
|
486
|
+
|
487
|
+
<li class="covered" data-hits="1" data-linenumber="7">
|
488
|
+
<span class="hits">1</span>
|
489
|
+
|
490
|
+
<code class="ruby"> def initialize(args=nil)</code>
|
491
|
+
</li>
|
492
|
+
|
493
|
+
<li class="covered" data-hits="4" data-linenumber="8">
|
494
|
+
<span class="hits">4</span>
|
495
|
+
|
496
|
+
<code class="ruby"> @validation_errors=[]</code>
|
497
|
+
</li>
|
498
|
+
|
499
|
+
<li class="covered" data-hits="4" data-linenumber="9">
|
500
|
+
<span class="hits">4</span>
|
501
|
+
|
502
|
+
<code class="ruby"> super(args)</code>
|
503
|
+
</li>
|
504
|
+
|
505
|
+
<li class="never" data-hits="" data-linenumber="10">
|
506
|
+
|
507
|
+
|
508
|
+
<code class="ruby"> end</code>
|
509
|
+
</li>
|
510
|
+
|
511
|
+
<li class="never" data-hits="" data-linenumber="11">
|
512
|
+
|
513
|
+
|
514
|
+
<code class="ruby"></code>
|
515
|
+
</li>
|
516
|
+
|
517
|
+
<li class="covered" data-hits="1" data-linenumber="12">
|
518
|
+
<span class="hits">1</span>
|
519
|
+
|
520
|
+
<code class="ruby"> def valid?</code>
|
521
|
+
</li>
|
522
|
+
|
523
|
+
<li class="covered" data-hits="1" data-linenumber="13">
|
524
|
+
<span class="hits">1</span>
|
525
|
+
|
526
|
+
<code class="ruby"> @validation_errors.empty?</code>
|
527
|
+
</li>
|
528
|
+
|
529
|
+
<li class="never" data-hits="" data-linenumber="14">
|
530
|
+
|
531
|
+
|
532
|
+
<code class="ruby"> end</code>
|
533
|
+
</li>
|
534
|
+
|
535
|
+
<li class="never" data-hits="" data-linenumber="15">
|
536
|
+
|
537
|
+
|
538
|
+
<code class="ruby"></code>
|
539
|
+
</li>
|
540
|
+
|
541
|
+
<li class="covered" data-hits="1" data-linenumber="16">
|
542
|
+
<span class="hits">1</span>
|
543
|
+
|
544
|
+
<code class="ruby"> def set_key_value(key, value, symbolize_key, make_method)</code>
|
545
|
+
</li>
|
546
|
+
|
547
|
+
<li class="covered" data-hits="6" data-linenumber="17">
|
548
|
+
<span class="hits">6</span>
|
549
|
+
|
550
|
+
<code class="ruby"> key = key.to_s.to_sym if symbolize_key</code>
|
551
|
+
</li>
|
552
|
+
|
553
|
+
<li class="covered" data-hits="6" data-linenumber="18">
|
554
|
+
<span class="hits">6</span>
|
555
|
+
|
556
|
+
<code class="ruby"> if make_method</code>
|
557
|
+
</li>
|
558
|
+
|
559
|
+
<li class="covered" data-hits="1" data-linenumber="19">
|
560
|
+
<span class="hits">1</span>
|
561
|
+
|
562
|
+
<code class="ruby"> singleton_class.module_eval do</code>
|
563
|
+
</li>
|
564
|
+
|
565
|
+
<li class="covered" data-hits="1" data-linenumber="20">
|
566
|
+
<span class="hits">1</span>
|
567
|
+
|
568
|
+
<code class="ruby"> define_method key.to_s.to_sym do</code>
|
569
|
+
</li>
|
570
|
+
|
571
|
+
<li class="covered" data-hits="1" data-linenumber="21">
|
572
|
+
<span class="hits">1</span>
|
573
|
+
|
574
|
+
<code class="ruby"> value</code>
|
575
|
+
</li>
|
576
|
+
|
577
|
+
<li class="never" data-hits="" data-linenumber="22">
|
578
|
+
|
579
|
+
|
580
|
+
<code class="ruby"> end</code>
|
581
|
+
</li>
|
582
|
+
|
583
|
+
<li class="never" data-hits="" data-linenumber="23">
|
584
|
+
|
585
|
+
|
586
|
+
<code class="ruby"> end</code>
|
587
|
+
</li>
|
588
|
+
|
589
|
+
<li class="never" data-hits="" data-linenumber="24">
|
590
|
+
|
591
|
+
|
592
|
+
<code class="ruby"> end</code>
|
593
|
+
</li>
|
594
|
+
|
595
|
+
<li class="covered" data-hits="6" data-linenumber="25">
|
596
|
+
<span class="hits">6</span>
|
597
|
+
|
598
|
+
<code class="ruby"> self[key]=value</code>
|
599
|
+
</li>
|
600
|
+
|
601
|
+
<li class="never" data-hits="" data-linenumber="26">
|
602
|
+
|
603
|
+
|
604
|
+
<code class="ruby"> end</code>
|
605
|
+
</li>
|
606
|
+
|
607
|
+
<li class="never" data-hits="" data-linenumber="27">
|
608
|
+
|
609
|
+
|
610
|
+
<code class="ruby"> end</code>
|
611
|
+
</li>
|
612
|
+
|
613
|
+
<li class="never" data-hits="" data-linenumber="28">
|
614
|
+
|
615
|
+
|
616
|
+
<code class="ruby"></code>
|
617
|
+
</li>
|
618
|
+
|
619
|
+
<li class="covered" data-hits="1" data-linenumber="29">
|
620
|
+
<span class="hits">1</span>
|
621
|
+
|
622
|
+
<code class="ruby"> class HashValidator</code>
|
623
|
+
</li>
|
624
|
+
|
625
|
+
<li class="never" data-hits="" data-linenumber="30">
|
626
|
+
|
627
|
+
|
628
|
+
<code class="ruby"></code>
|
629
|
+
</li>
|
630
|
+
|
631
|
+
<li class="covered" data-hits="1" data-linenumber="31">
|
632
|
+
<span class="hits">1</span>
|
633
|
+
|
634
|
+
<code class="ruby"> def validate_hash(h, options={})</code>
|
635
|
+
</li>
|
636
|
+
|
637
|
+
<li class="never" data-hits="" data-linenumber="32">
|
638
|
+
|
639
|
+
|
640
|
+
<code class="ruby"> #Hash Validation has to be stateful</code>
|
641
|
+
</li>
|
642
|
+
|
643
|
+
<li class="never" data-hits="" data-linenumber="33">
|
644
|
+
|
645
|
+
|
646
|
+
<code class="ruby"></code>
|
647
|
+
</li>
|
648
|
+
|
649
|
+
<li class="covered" data-hits="4" data-linenumber="34">
|
650
|
+
<span class="hits">4</span>
|
651
|
+
|
652
|
+
<code class="ruby"> @incoming = h</code>
|
653
|
+
</li>
|
654
|
+
|
655
|
+
<li class="covered" data-hits="4" data-linenumber="35">
|
656
|
+
<span class="hits">4</span>
|
657
|
+
|
658
|
+
<code class="ruby"> @outgoing = HPHash.new</code>
|
659
|
+
</li>
|
660
|
+
|
661
|
+
<li class="covered" data-hits="4" data-linenumber="36">
|
662
|
+
<span class="hits">4</span>
|
663
|
+
|
664
|
+
<code class="ruby"> @options = options</code>
|
665
|
+
</li>
|
666
|
+
|
667
|
+
<li class="never" data-hits="" data-linenumber="37">
|
668
|
+
|
669
|
+
|
670
|
+
<code class="ruby"></code>
|
671
|
+
</li>
|
672
|
+
|
673
|
+
<li class="covered" data-hits="4" data-linenumber="38">
|
674
|
+
<span class="hits">4</span>
|
675
|
+
|
676
|
+
<code class="ruby"> if block_given?</code>
|
677
|
+
</li>
|
678
|
+
|
679
|
+
<li class="covered" data-hits="3" data-linenumber="39">
|
680
|
+
<span class="hits">3</span>
|
681
|
+
|
682
|
+
<code class="ruby"> instance_eval(&Proc.new)</code>
|
683
|
+
</li>
|
684
|
+
|
685
|
+
<li class="never" data-hits="" data-linenumber="40">
|
686
|
+
|
687
|
+
|
688
|
+
<code class="ruby"> else</code>
|
689
|
+
</li>
|
690
|
+
|
691
|
+
<li class="never" data-hits="" data-linenumber="41">
|
692
|
+
|
693
|
+
|
694
|
+
<code class="ruby"> #no proc was given this means just pass the hash back as is</code>
|
695
|
+
</li>
|
696
|
+
|
697
|
+
<li class="covered" data-hits="1" data-linenumber="42">
|
698
|
+
<span class="hits">1</span>
|
699
|
+
|
700
|
+
<code class="ruby"> @outgoing = @incoming</code>
|
701
|
+
</li>
|
702
|
+
|
703
|
+
<li class="never" data-hits="" data-linenumber="43">
|
704
|
+
|
705
|
+
|
706
|
+
<code class="ruby"> end</code>
|
707
|
+
</li>
|
708
|
+
|
709
|
+
<li class="covered" data-hits="4" data-linenumber="44">
|
710
|
+
<span class="hits">4</span>
|
711
|
+
|
712
|
+
<code class="ruby"> @outgoing</code>
|
713
|
+
</li>
|
714
|
+
|
715
|
+
<li class="never" data-hits="" data-linenumber="45">
|
716
|
+
|
717
|
+
|
718
|
+
<code class="ruby"> end</code>
|
719
|
+
</li>
|
720
|
+
|
721
|
+
<li class="never" data-hits="" data-linenumber="46">
|
722
|
+
|
723
|
+
|
724
|
+
<code class="ruby"></code>
|
725
|
+
</li>
|
726
|
+
|
727
|
+
<li class="covered" data-hits="1" data-linenumber="47">
|
728
|
+
<span class="hits">1</span>
|
729
|
+
|
730
|
+
<code class="ruby"> def key(hash_key, type, opts={})</code>
|
731
|
+
</li>
|
732
|
+
|
733
|
+
<li class="covered" data-hits="7" data-linenumber="48">
|
734
|
+
<span class="hits">7</span>
|
735
|
+
|
736
|
+
<code class="ruby"> value = @incoming[hash_key] || @incoming[hash_key.to_s]</code>
|
737
|
+
</li>
|
738
|
+
|
739
|
+
<li class="never" data-hits="" data-linenumber="49">
|
740
|
+
|
741
|
+
|
742
|
+
<code class="ruby"> # if a block is given to the param then it's a recursive call</code>
|
743
|
+
</li>
|
744
|
+
|
745
|
+
<li class="never" data-hits="" data-linenumber="50">
|
746
|
+
|
747
|
+
|
748
|
+
<code class="ruby"> # recursive calls can only be done with a hash</code>
|
749
|
+
</li>
|
750
|
+
|
751
|
+
<li class="covered" data-hits="7" data-linenumber="51">
|
752
|
+
<span class="hits">7</span>
|
753
|
+
|
754
|
+
<code class="ruby"> new_value = if value.is_a?(Hash)</code>
|
755
|
+
</li>
|
756
|
+
|
757
|
+
<li class="covered" data-hits="1" data-linenumber="52">
|
758
|
+
<span class="hits">1</span>
|
759
|
+
|
760
|
+
<code class="ruby"> if block_given?</code>
|
761
|
+
</li>
|
762
|
+
|
763
|
+
<li class="never" data-hits="" data-linenumber="53">
|
764
|
+
|
765
|
+
|
766
|
+
<code class="ruby"> #if the param is a hash then the validations are actually options</code>
|
767
|
+
</li>
|
768
|
+
|
769
|
+
<li class="covered" data-hits="1" data-linenumber="54">
|
770
|
+
<span class="hits">1</span>
|
771
|
+
|
772
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(value, @options, &Proc.new)</code>
|
773
|
+
</li>
|
774
|
+
|
775
|
+
<li class="never" data-hits="" data-linenumber="55">
|
776
|
+
|
777
|
+
|
778
|
+
<code class="ruby"> else</code>
|
779
|
+
</li>
|
780
|
+
|
781
|
+
<li class="missed" data-hits="0" data-linenumber="56">
|
782
|
+
|
783
|
+
|
784
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(value, opts)</code>
|
785
|
+
</li>
|
786
|
+
|
787
|
+
<li class="never" data-hits="" data-linenumber="57">
|
788
|
+
|
789
|
+
|
790
|
+
<code class="ruby"> end</code>
|
791
|
+
</li>
|
792
|
+
|
793
|
+
<li class="never" data-hits="" data-linenumber="58">
|
794
|
+
|
795
|
+
|
796
|
+
<code class="ruby"> else</code>
|
797
|
+
</li>
|
798
|
+
|
799
|
+
<li class="covered" data-hits="6" data-linenumber="59">
|
800
|
+
<span class="hits">6</span>
|
801
|
+
|
802
|
+
<code class="ruby"> HashParams.validate value, type, opts</code>
|
803
|
+
</li>
|
804
|
+
|
805
|
+
<li class="never" data-hits="" data-linenumber="60">
|
806
|
+
|
807
|
+
|
808
|
+
<code class="ruby"> end</code>
|
809
|
+
</li>
|
810
|
+
|
811
|
+
<li class="covered" data-hits="6" data-linenumber="61">
|
812
|
+
<span class="hits">6</span>
|
813
|
+
|
814
|
+
<code class="ruby"> hash_key = opts[:as] if opts[:as]</code>
|
815
|
+
</li>
|
816
|
+
|
817
|
+
<li class="covered" data-hits="6" data-linenumber="62">
|
818
|
+
<span class="hits">6</span>
|
819
|
+
|
820
|
+
<code class="ruby"> @outgoing.set_key_value(hash_key, new_value, @options[:symbolize_keys], @options[:make_methods])</code>
|
821
|
+
</li>
|
822
|
+
|
823
|
+
<li class="covered" data-hits="6" data-linenumber="63">
|
824
|
+
<span class="hits">6</span>
|
825
|
+
|
826
|
+
<code class="ruby"> new_value</code>
|
827
|
+
</li>
|
828
|
+
|
829
|
+
<li class="never" data-hits="" data-linenumber="64">
|
830
|
+
|
831
|
+
|
832
|
+
<code class="ruby"> rescue => e</code>
|
833
|
+
</li>
|
834
|
+
|
835
|
+
<li class="covered" data-hits="1" data-linenumber="65">
|
836
|
+
<span class="hits">1</span>
|
837
|
+
|
838
|
+
<code class="ruby"> @outgoing.validation_errors << "Error processing key '#{hash_key}': #{e}" # [e.to_s, e.backtrace].join("\n")</code>
|
839
|
+
</li>
|
840
|
+
|
841
|
+
<li class="covered" data-hits="1" data-linenumber="66">
|
842
|
+
<span class="hits">1</span>
|
843
|
+
|
844
|
+
<code class="ruby"> raise e if @options[:raise_errors]</code>
|
845
|
+
</li>
|
846
|
+
|
847
|
+
<li class="covered" data-hits="1" data-linenumber="67">
|
848
|
+
<span class="hits">1</span>
|
849
|
+
|
850
|
+
<code class="ruby"> nil</code>
|
851
|
+
</li>
|
852
|
+
|
853
|
+
<li class="never" data-hits="" data-linenumber="68">
|
854
|
+
|
855
|
+
|
856
|
+
<code class="ruby"> end</code>
|
857
|
+
</li>
|
858
|
+
|
859
|
+
<li class="covered" data-hits="1" data-linenumber="69">
|
860
|
+
<span class="hits">1</span>
|
861
|
+
|
862
|
+
<code class="ruby"> alias_method :param, :key</code>
|
863
|
+
</li>
|
864
|
+
|
865
|
+
<li class="never" data-hits="" data-linenumber="70">
|
866
|
+
|
867
|
+
|
868
|
+
<code class="ruby"> end</code>
|
869
|
+
</li>
|
870
|
+
|
871
|
+
<li class="never" data-hits="" data-linenumber="71">
|
872
|
+
|
873
|
+
|
874
|
+
<code class="ruby">end</code>
|
875
|
+
</li>
|
876
|
+
|
877
|
+
</ol>
|
878
|
+
</pre>
|
879
|
+
</div>
|
880
|
+
|
881
|
+
<div class="source_table" id="f39507e800e8d660c679f1092f4a3b699ac789cb">
|
882
|
+
<div class="header">
|
883
|
+
<h3>lib/hash_params/validator.rb</h3>
|
884
|
+
<h4><span class="green">94.74 %</span> covered</h4>
|
885
|
+
<div>
|
886
|
+
<b>57</b> relevant lines.
|
887
|
+
<span class="green"><b>54</b> lines covered</span> and
|
888
|
+
<span class="red"><b>3</b> lines missed.</span>
|
889
|
+
</div>
|
890
|
+
</div>
|
891
|
+
|
892
|
+
<pre>
|
893
|
+
<ol>
|
894
|
+
|
895
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
896
|
+
<span class="hits">1</span>
|
897
|
+
|
898
|
+
<code class="ruby">module HashParams</code>
|
899
|
+
</li>
|
900
|
+
|
901
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
902
|
+
<span class="hits">1</span>
|
903
|
+
|
904
|
+
<code class="ruby"> module Validator</code>
|
905
|
+
</li>
|
906
|
+
|
907
|
+
<li class="never" data-hits="" data-linenumber="3">
|
908
|
+
|
909
|
+
|
910
|
+
<code class="ruby"></code>
|
911
|
+
</li>
|
912
|
+
|
913
|
+
<li class="covered" data-hits="1" data-linenumber="4">
|
914
|
+
<span class="hits">1</span>
|
915
|
+
|
916
|
+
<code class="ruby"> class ValidationError < StandardError</code>
|
917
|
+
</li>
|
918
|
+
|
919
|
+
<li class="never" data-hits="" data-linenumber="5">
|
920
|
+
|
921
|
+
|
922
|
+
<code class="ruby"> end</code>
|
923
|
+
</li>
|
924
|
+
|
925
|
+
<li class="never" data-hits="" data-linenumber="6">
|
926
|
+
|
927
|
+
|
928
|
+
<code class="ruby"></code>
|
929
|
+
</li>
|
930
|
+
|
931
|
+
<li class="covered" data-hits="1" data-linenumber="7">
|
932
|
+
<span class="hits">1</span>
|
933
|
+
|
934
|
+
<code class="ruby"> class CoercionError < StandardError</code>
|
935
|
+
</li>
|
936
|
+
|
937
|
+
<li class="never" data-hits="" data-linenumber="8">
|
938
|
+
|
939
|
+
|
940
|
+
<code class="ruby"> end</code>
|
941
|
+
</li>
|
942
|
+
|
943
|
+
<li class="never" data-hits="" data-linenumber="9">
|
944
|
+
|
945
|
+
|
946
|
+
<code class="ruby"></code>
|
947
|
+
</li>
|
948
|
+
|
949
|
+
<li class="covered" data-hits="1" data-linenumber="10">
|
950
|
+
<span class="hits">1</span>
|
951
|
+
|
952
|
+
<code class="ruby"> def with_binding(&code)</code>
|
953
|
+
</li>
|
954
|
+
|
955
|
+
<li class="covered" data-hits="1" data-linenumber="11">
|
956
|
+
<span class="hits">1</span>
|
957
|
+
|
958
|
+
<code class="ruby"> BindingValidator.new.with_binding(&code)</code>
|
959
|
+
</li>
|
960
|
+
|
961
|
+
<li class="never" data-hits="" data-linenumber="12">
|
962
|
+
|
963
|
+
|
964
|
+
<code class="ruby"> end</code>
|
965
|
+
</li>
|
966
|
+
|
967
|
+
<li class="never" data-hits="" data-linenumber="13">
|
968
|
+
|
969
|
+
|
970
|
+
<code class="ruby"></code>
|
971
|
+
</li>
|
972
|
+
|
973
|
+
<li class="covered" data-hits="1" data-linenumber="14">
|
974
|
+
<span class="hits">1</span>
|
975
|
+
|
976
|
+
<code class="ruby"> def validate(param, type, validations={})</code>
|
977
|
+
</li>
|
978
|
+
|
979
|
+
<li class="never" data-hits="" data-linenumber="15">
|
980
|
+
|
981
|
+
|
982
|
+
<code class="ruby"></code>
|
983
|
+
</li>
|
984
|
+
|
985
|
+
<li class="covered" data-hits="30" data-linenumber="16">
|
986
|
+
<span class="hits">30</span>
|
987
|
+
|
988
|
+
<code class="ruby"> coercions = Array(validations[:coerce]) << type</code>
|
989
|
+
</li>
|
990
|
+
|
991
|
+
<li class="never" data-hits="" data-linenumber="17">
|
992
|
+
|
993
|
+
|
994
|
+
<code class="ruby"></code>
|
995
|
+
</li>
|
996
|
+
|
997
|
+
<li class="covered" data-hits="30" data-linenumber="18">
|
998
|
+
<span class="hits">30</span>
|
999
|
+
|
1000
|
+
<code class="ruby"> if param.nil? && validations[:default]</code>
|
1001
|
+
</li>
|
1002
|
+
|
1003
|
+
<li class="covered" data-hits="5" data-linenumber="19">
|
1004
|
+
<span class="hits">5</span>
|
1005
|
+
|
1006
|
+
<code class="ruby"> param = validations[:default].respond_to?(:call) ? validations[:default].call() : validations[:default]</code>
|
1007
|
+
</li>
|
1008
|
+
|
1009
|
+
<li class="never" data-hits="" data-linenumber="20">
|
1010
|
+
|
1011
|
+
|
1012
|
+
<code class="ruby"> end</code>
|
1013
|
+
</li>
|
1014
|
+
|
1015
|
+
<li class="never" data-hits="" data-linenumber="21">
|
1016
|
+
|
1017
|
+
|
1018
|
+
<code class="ruby"></code>
|
1019
|
+
</li>
|
1020
|
+
|
1021
|
+
<li class="never" data-hits="" data-linenumber="22">
|
1022
|
+
|
1023
|
+
|
1024
|
+
<code class="ruby"> #if there is a :validate lambda run that too</code>
|
1025
|
+
</li>
|
1026
|
+
|
1027
|
+
<li class="covered" data-hits="30" data-linenumber="23">
|
1028
|
+
<span class="hits">30</span>
|
1029
|
+
|
1030
|
+
<code class="ruby"> if validations[:validate] && validations[:validate].respond_to?(:call)</code>
|
1031
|
+
</li>
|
1032
|
+
|
1033
|
+
<li class="covered" data-hits="2" data-linenumber="24">
|
1034
|
+
<span class="hits">2</span>
|
1035
|
+
|
1036
|
+
<code class="ruby"> param = validations.delete(:validate).call(param)</code>
|
1037
|
+
</li>
|
1038
|
+
|
1039
|
+
<li class="never" data-hits="" data-linenumber="25">
|
1040
|
+
|
1041
|
+
|
1042
|
+
<code class="ruby"> end</code>
|
1043
|
+
</li>
|
1044
|
+
|
1045
|
+
<li class="never" data-hits="" data-linenumber="26">
|
1046
|
+
|
1047
|
+
|
1048
|
+
<code class="ruby"></code>
|
1049
|
+
</li>
|
1050
|
+
|
1051
|
+
<li class="covered" data-hits="30" data-linenumber="27">
|
1052
|
+
<span class="hits">30</span>
|
1053
|
+
|
1054
|
+
<code class="ruby"> if block_given? && !param.is_a?(Hash)</code>
|
1055
|
+
</li>
|
1056
|
+
|
1057
|
+
<li class="covered" data-hits="1" data-linenumber="28">
|
1058
|
+
<span class="hits">1</span>
|
1059
|
+
|
1060
|
+
<code class="ruby"> param = yield(param, validations)</code>
|
1061
|
+
</li>
|
1062
|
+
|
1063
|
+
<li class="never" data-hits="" data-linenumber="29">
|
1064
|
+
|
1065
|
+
|
1066
|
+
<code class="ruby"> end</code>
|
1067
|
+
</li>
|
1068
|
+
|
1069
|
+
<li class="never" data-hits="" data-linenumber="30">
|
1070
|
+
|
1071
|
+
|
1072
|
+
<code class="ruby"></code>
|
1073
|
+
</li>
|
1074
|
+
|
1075
|
+
<li class="never" data-hits="" data-linenumber="31">
|
1076
|
+
|
1077
|
+
|
1078
|
+
<code class="ruby"> # do all coercion and transformation first there could be an array of coersions they will be run in order</code>
|
1079
|
+
</li>
|
1080
|
+
|
1081
|
+
<li class="covered" data-hits="30" data-linenumber="32">
|
1082
|
+
<span class="hits">30</span>
|
1083
|
+
|
1084
|
+
<code class="ruby"> coercions.each do |c|</code>
|
1085
|
+
</li>
|
1086
|
+
|
1087
|
+
<li class="covered" data-hits="32" data-linenumber="33">
|
1088
|
+
<span class="hits">32</span>
|
1089
|
+
|
1090
|
+
<code class="ruby"> param = coerce(param, c, validations)</code>
|
1091
|
+
</li>
|
1092
|
+
|
1093
|
+
<li class="never" data-hits="" data-linenumber="34">
|
1094
|
+
|
1095
|
+
|
1096
|
+
<code class="ruby"> end</code>
|
1097
|
+
</li>
|
1098
|
+
|
1099
|
+
<li class="never" data-hits="" data-linenumber="35">
|
1100
|
+
|
1101
|
+
|
1102
|
+
<code class="ruby"></code>
|
1103
|
+
</li>
|
1104
|
+
|
1105
|
+
<li class="covered" data-hits="30" data-linenumber="36">
|
1106
|
+
<span class="hits">30</span>
|
1107
|
+
|
1108
|
+
<code class="ruby"> if param.is_a?(Hash)</code>
|
1109
|
+
</li>
|
1110
|
+
|
1111
|
+
<li class="covered" data-hits="2" data-linenumber="37">
|
1112
|
+
<span class="hits">2</span>
|
1113
|
+
|
1114
|
+
<code class="ruby"> param = if block_given?</code>
|
1115
|
+
</li>
|
1116
|
+
|
1117
|
+
<li class="covered" data-hits="1" data-linenumber="38">
|
1118
|
+
<span class="hits">1</span>
|
1119
|
+
|
1120
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(param, validations, &Proc.new)</code>
|
1121
|
+
</li>
|
1122
|
+
|
1123
|
+
<li class="never" data-hits="" data-linenumber="39">
|
1124
|
+
|
1125
|
+
|
1126
|
+
<code class="ruby"> else</code>
|
1127
|
+
</li>
|
1128
|
+
|
1129
|
+
<li class="covered" data-hits="1" data-linenumber="40">
|
1130
|
+
<span class="hits">1</span>
|
1131
|
+
|
1132
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(param, validations)</code>
|
1133
|
+
</li>
|
1134
|
+
|
1135
|
+
<li class="never" data-hits="" data-linenumber="41">
|
1136
|
+
|
1137
|
+
|
1138
|
+
<code class="ruby"> end</code>
|
1139
|
+
</li>
|
1140
|
+
|
1141
|
+
<li class="never" data-hits="" data-linenumber="42">
|
1142
|
+
|
1143
|
+
|
1144
|
+
<code class="ruby"> end</code>
|
1145
|
+
</li>
|
1146
|
+
|
1147
|
+
<li class="never" data-hits="" data-linenumber="43">
|
1148
|
+
|
1149
|
+
|
1150
|
+
<code class="ruby"></code>
|
1151
|
+
</li>
|
1152
|
+
|
1153
|
+
<li class="never" data-hits="" data-linenumber="44">
|
1154
|
+
|
1155
|
+
|
1156
|
+
<code class="ruby"> #don't bother with the rest if required parameter is missing</code>
|
1157
|
+
</li>
|
1158
|
+
|
1159
|
+
<li class="covered" data-hits="30" data-linenumber="45">
|
1160
|
+
<span class="hits">30</span>
|
1161
|
+
|
1162
|
+
<code class="ruby"> if validations[:required] && param.nil?</code>
|
1163
|
+
</li>
|
1164
|
+
|
1165
|
+
<li class="covered" data-hits="2" data-linenumber="46">
|
1166
|
+
<span class="hits">2</span>
|
1167
|
+
|
1168
|
+
<code class="ruby"> raise ValidationError.new('Required Parameter missing and has no default specified')</code>
|
1169
|
+
</li>
|
1170
|
+
|
1171
|
+
<li class="never" data-hits="" data-linenumber="47">
|
1172
|
+
|
1173
|
+
|
1174
|
+
<code class="ruby"> end</code>
|
1175
|
+
</li>
|
1176
|
+
|
1177
|
+
<li class="never" data-hits="" data-linenumber="48">
|
1178
|
+
|
1179
|
+
|
1180
|
+
<code class="ruby"></code>
|
1181
|
+
</li>
|
1182
|
+
|
1183
|
+
<li class="covered" data-hits="28" data-linenumber="49">
|
1184
|
+
<span class="hits">28</span>
|
1185
|
+
|
1186
|
+
<code class="ruby"> error = nil</code>
|
1187
|
+
</li>
|
1188
|
+
|
1189
|
+
<li class="covered" data-hits="28" data-linenumber="50">
|
1190
|
+
<span class="hits">28</span>
|
1191
|
+
|
1192
|
+
<code class="ruby"> validations.each do |key, value|</code>
|
1193
|
+
</li>
|
1194
|
+
|
1195
|
+
<li class="covered" data-hits="23" data-linenumber="51">
|
1196
|
+
<span class="hits">23</span>
|
1197
|
+
|
1198
|
+
<code class="ruby"> error = case key</code>
|
1199
|
+
</li>
|
1200
|
+
|
1201
|
+
<li class="never" data-hits="" data-linenumber="52">
|
1202
|
+
|
1203
|
+
|
1204
|
+
<code class="ruby"> when :blank</code>
|
1205
|
+
</li>
|
1206
|
+
|
1207
|
+
<li class="missed" data-hits="0" data-linenumber="53">
|
1208
|
+
|
1209
|
+
|
1210
|
+
<code class="ruby"> 'Parameter cannot be blank' if !value && (param.nil? || (param.respond_to?(:empty) && param.empty)) #)!value && blank?(value)</code>
|
1211
|
+
</li>
|
1212
|
+
|
1213
|
+
<li class="never" data-hits="" data-linenumber="54">
|
1214
|
+
|
1215
|
+
|
1216
|
+
<code class="ruby"> when :format</code>
|
1217
|
+
</li>
|
1218
|
+
|
1219
|
+
<li class="covered" data-hits="2" data-linenumber="55">
|
1220
|
+
<span class="hits">2</span>
|
1221
|
+
|
1222
|
+
<code class="ruby"> "#{param} must be a string if using the format validation" && next unless param.kind_of?(String)</code>
|
1223
|
+
</li>
|
1224
|
+
|
1225
|
+
<li class="covered" data-hits="2" data-linenumber="56">
|
1226
|
+
<span class="hits">2</span>
|
1227
|
+
|
1228
|
+
<code class="ruby"> "#{param} must match format #{value}" unless param =~ value</code>
|
1229
|
+
</li>
|
1230
|
+
|
1231
|
+
<li class="never" data-hits="" data-linenumber="57">
|
1232
|
+
|
1233
|
+
|
1234
|
+
<code class="ruby"> when :is</code>
|
1235
|
+
</li>
|
1236
|
+
|
1237
|
+
<li class="covered" data-hits="1" data-linenumber="58">
|
1238
|
+
<span class="hits">1</span>
|
1239
|
+
|
1240
|
+
<code class="ruby"> "#{param} must be #{value}" unless param === value</code>
|
1241
|
+
</li>
|
1242
|
+
|
1243
|
+
<li class="never" data-hits="" data-linenumber="59">
|
1244
|
+
|
1245
|
+
|
1246
|
+
<code class="ruby"> when :in, :within, :range</code>
|
1247
|
+
</li>
|
1248
|
+
|
1249
|
+
<li class="covered" data-hits="1" data-linenumber="60">
|
1250
|
+
<span class="hits">1</span>
|
1251
|
+
|
1252
|
+
<code class="ruby"> "#{param} must be within #{value}" unless value.respond_to?(:include) ? value.include?(param) : Array(value).include?(param)</code>
|
1253
|
+
</li>
|
1254
|
+
|
1255
|
+
<li class="never" data-hits="" data-linenumber="61">
|
1256
|
+
|
1257
|
+
|
1258
|
+
<code class="ruby"> when :min</code>
|
1259
|
+
</li>
|
1260
|
+
|
1261
|
+
<li class="covered" data-hits="2" data-linenumber="62">
|
1262
|
+
<span class="hits">2</span>
|
1263
|
+
|
1264
|
+
<code class="ruby"> "#{param} cannot be less than #{value}" unless value <= param</code>
|
1265
|
+
</li>
|
1266
|
+
|
1267
|
+
<li class="never" data-hits="" data-linenumber="63">
|
1268
|
+
|
1269
|
+
|
1270
|
+
<code class="ruby"> when :max</code>
|
1271
|
+
</li>
|
1272
|
+
|
1273
|
+
<li class="covered" data-hits="2" data-linenumber="64">
|
1274
|
+
<span class="hits">2</span>
|
1275
|
+
|
1276
|
+
<code class="ruby"> "#{param} cannot be greater than #{value}" unless value >= param</code>
|
1277
|
+
</li>
|
1278
|
+
|
1279
|
+
<li class="never" data-hits="" data-linenumber="65">
|
1280
|
+
|
1281
|
+
|
1282
|
+
<code class="ruby"> when :min_length</code>
|
1283
|
+
</li>
|
1284
|
+
|
1285
|
+
<li class="covered" data-hits="2" data-linenumber="66">
|
1286
|
+
<span class="hits">2</span>
|
1287
|
+
|
1288
|
+
<code class="ruby"> "#{param} cannot have length less than #{value}" unless value <= param.length</code>
|
1289
|
+
</li>
|
1290
|
+
|
1291
|
+
<li class="never" data-hits="" data-linenumber="67">
|
1292
|
+
|
1293
|
+
|
1294
|
+
<code class="ruby"> when :max_length</code>
|
1295
|
+
</li>
|
1296
|
+
|
1297
|
+
<li class="covered" data-hits="2" data-linenumber="68">
|
1298
|
+
<span class="hits">2</span>
|
1299
|
+
|
1300
|
+
<code class="ruby"> "#{param} cannot have length greater than #{value}" unless value >= param.length</code>
|
1301
|
+
</li>
|
1302
|
+
|
1303
|
+
<li class="never" data-hits="" data-linenumber="69">
|
1304
|
+
|
1305
|
+
|
1306
|
+
<code class="ruby"> else</code>
|
1307
|
+
</li>
|
1308
|
+
|
1309
|
+
<li class="covered" data-hits="11" data-linenumber="70">
|
1310
|
+
<span class="hits">11</span>
|
1311
|
+
|
1312
|
+
<code class="ruby"> nil</code>
|
1313
|
+
</li>
|
1314
|
+
|
1315
|
+
<li class="never" data-hits="" data-linenumber="71">
|
1316
|
+
|
1317
|
+
|
1318
|
+
<code class="ruby"> end</code>
|
1319
|
+
</li>
|
1320
|
+
|
1321
|
+
<li class="never" data-hits="" data-linenumber="72">
|
1322
|
+
|
1323
|
+
|
1324
|
+
<code class="ruby"> end</code>
|
1325
|
+
</li>
|
1326
|
+
|
1327
|
+
<li class="never" data-hits="" data-linenumber="73">
|
1328
|
+
|
1329
|
+
|
1330
|
+
<code class="ruby"></code>
|
1331
|
+
</li>
|
1332
|
+
|
1333
|
+
<li class="covered" data-hits="28" data-linenumber="74">
|
1334
|
+
<span class="hits">28</span>
|
1335
|
+
|
1336
|
+
<code class="ruby"> raise ValidationError.new(error) if error</code>
|
1337
|
+
</li>
|
1338
|
+
|
1339
|
+
<li class="covered" data-hits="28" data-linenumber="75">
|
1340
|
+
<span class="hits">28</span>
|
1341
|
+
|
1342
|
+
<code class="ruby"> param</code>
|
1343
|
+
</li>
|
1344
|
+
|
1345
|
+
<li class="never" data-hits="" data-linenumber="76">
|
1346
|
+
|
1347
|
+
|
1348
|
+
<code class="ruby"> end</code>
|
1349
|
+
</li>
|
1350
|
+
|
1351
|
+
<li class="never" data-hits="" data-linenumber="77">
|
1352
|
+
|
1353
|
+
|
1354
|
+
<code class="ruby"></code>
|
1355
|
+
</li>
|
1356
|
+
|
1357
|
+
<li class="covered" data-hits="1" data-linenumber="78">
|
1358
|
+
<span class="hits">1</span>
|
1359
|
+
|
1360
|
+
<code class="ruby"> private</code>
|
1361
|
+
</li>
|
1362
|
+
|
1363
|
+
<li class="never" data-hits="" data-linenumber="79">
|
1364
|
+
|
1365
|
+
|
1366
|
+
<code class="ruby"></code>
|
1367
|
+
</li>
|
1368
|
+
|
1369
|
+
<li class="covered" data-hits="1" data-linenumber="80">
|
1370
|
+
<span class="hits">1</span>
|
1371
|
+
|
1372
|
+
<code class="ruby"> def coerce(val, type, opts={})</code>
|
1373
|
+
</li>
|
1374
|
+
|
1375
|
+
<li class="never" data-hits="" data-linenumber="81">
|
1376
|
+
|
1377
|
+
|
1378
|
+
<code class="ruby"></code>
|
1379
|
+
</li>
|
1380
|
+
|
1381
|
+
<li class="never" data-hits="" data-linenumber="82">
|
1382
|
+
|
1383
|
+
|
1384
|
+
<code class="ruby"> # exceptions bubble up</code>
|
1385
|
+
</li>
|
1386
|
+
|
1387
|
+
<li class="never" data-hits="" data-linenumber="83">
|
1388
|
+
|
1389
|
+
|
1390
|
+
<code class="ruby"> #order is important</code>
|
1391
|
+
</li>
|
1392
|
+
|
1393
|
+
<li class="never" data-hits="" data-linenumber="84">
|
1394
|
+
|
1395
|
+
|
1396
|
+
<code class="ruby"></code>
|
1397
|
+
</li>
|
1398
|
+
|
1399
|
+
<li class="never" data-hits="" data-linenumber="85">
|
1400
|
+
|
1401
|
+
|
1402
|
+
<code class="ruby"> #if type is nil just return the object</code>
|
1403
|
+
</li>
|
1404
|
+
|
1405
|
+
<li class="covered" data-hits="32" data-linenumber="86">
|
1406
|
+
<span class="hits">32</span>
|
1407
|
+
|
1408
|
+
<code class="ruby"> return val if type.nil?</code>
|
175
1409
|
</li>
|
176
1410
|
|
177
|
-
<li class="never" data-hits="" data-linenumber="
|
1411
|
+
<li class="never" data-hits="" data-linenumber="87">
|
178
1412
|
|
179
1413
|
|
180
1414
|
<code class="ruby"></code>
|
181
1415
|
</li>
|
182
1416
|
|
183
|
-
<li class="never" data-hits="" data-linenumber="
|
1417
|
+
<li class="never" data-hits="" data-linenumber="88">
|
184
1418
|
|
185
1419
|
|
186
|
-
<code class="ruby">
|
1420
|
+
<code class="ruby"> #two special types of transforms</code>
|
187
1421
|
</li>
|
188
1422
|
|
189
|
-
<li class="never" data-hits="" data-linenumber="
|
1423
|
+
<li class="never" data-hits="" data-linenumber="89">
|
190
1424
|
|
191
1425
|
|
192
|
-
<code class="ruby"
|
1426
|
+
<code class="ruby"> #There is no Boolean type so we handle them special</code>
|
193
1427
|
</li>
|
194
1428
|
|
195
|
-
<li class="covered" data-hits="
|
196
|
-
<span class="hits">
|
1429
|
+
<li class="covered" data-hits="30" data-linenumber="90">
|
1430
|
+
<span class="hits">30</span>
|
197
1431
|
|
198
|
-
<code class="ruby">
|
1432
|
+
<code class="ruby"> if type.to_s == 'boolean'</code>
|
199
1433
|
</li>
|
200
1434
|
|
201
|
-
<li class="covered" data-hits="
|
202
|
-
<span class="hits">
|
1435
|
+
<li class="covered" data-hits="11" data-linenumber="91">
|
1436
|
+
<span class="hits">11</span>
|
203
1437
|
|
204
|
-
<code class="ruby">
|
1438
|
+
<code class="ruby"> return val if (val == true || val == false)</code>
|
205
1439
|
</li>
|
206
1440
|
|
207
|
-
<li class="covered" data-hits="
|
208
|
-
<span class="hits">
|
1441
|
+
<li class="covered" data-hits="10" data-linenumber="92">
|
1442
|
+
<span class="hits">10</span>
|
209
1443
|
|
210
|
-
<code class="ruby">
|
1444
|
+
<code class="ruby"> return false if /(false|f|no|n|0)$/i === val.to_s.downcase</code>
|
211
1445
|
</li>
|
212
1446
|
|
213
|
-
<li class="
|
214
|
-
|
1447
|
+
<li class="covered" data-hits="5" data-linenumber="93">
|
1448
|
+
<span class="hits">5</span>
|
215
1449
|
|
216
|
-
<code class="ruby">
|
1450
|
+
<code class="ruby"> return true if /(true|t|yes|y|1)$/i === val.to_s.downcase</code>
|
217
1451
|
</li>
|
218
1452
|
|
219
|
-
<li class="never" data-hits="" data-linenumber="
|
1453
|
+
<li class="never" data-hits="" data-linenumber="94">
|
220
1454
|
|
221
1455
|
|
222
1456
|
<code class="ruby"></code>
|
223
1457
|
</li>
|
224
1458
|
|
225
|
-
<li class="never" data-hits="" data-linenumber="
|
1459
|
+
<li class="never" data-hits="" data-linenumber="95">
|
226
1460
|
|
227
1461
|
|
228
|
-
<code class="ruby">
|
1462
|
+
<code class="ruby"> # if we can't parse we return a nil</code>
|
229
1463
|
</li>
|
230
1464
|
|
231
|
-
<li class="
|
232
|
-
<span class="hits">15</span>
|
1465
|
+
<li class="never" data-hits="" data-linenumber="96">
|
233
1466
|
|
234
|
-
|
1467
|
+
|
1468
|
+
<code class="ruby"> # maybe !!val is a better return?</code>
|
235
1469
|
</li>
|
236
1470
|
|
237
|
-
<li class="
|
1471
|
+
<li class="missed" data-hits="0" data-linenumber="97">
|
238
1472
|
|
239
1473
|
|
240
|
-
<code class="ruby">
|
1474
|
+
<code class="ruby"> raise CoercionError.new("Unable to coerce #{val} to boolean")</code>
|
241
1475
|
</li>
|
242
1476
|
|
243
|
-
<li class="never" data-hits="" data-linenumber="
|
1477
|
+
<li class="never" data-hits="" data-linenumber="98">
|
244
1478
|
|
245
1479
|
|
246
|
-
<code class="ruby"
|
1480
|
+
<code class="ruby"> end</code>
|
247
1481
|
</li>
|
248
1482
|
|
249
|
-
<li class="
|
250
|
-
<span class="hits">14</span>
|
1483
|
+
<li class="never" data-hits="" data-linenumber="99">
|
251
1484
|
|
252
|
-
<code class="ruby"> Array(h[:coerce]).each do |c|</code>
|
253
|
-
</li>
|
254
|
-
|
255
|
-
<li class="covered" data-hits="9" data-linenumber="28">
|
256
|
-
<span class="hits">9</span>
|
257
1485
|
|
258
|
-
<code class="ruby">
|
1486
|
+
<code class="ruby"> #they have given us a coercion which is a string or symbol which is not "boolean", we are going to cast this into a proc and run it</code>
|
259
1487
|
</li>
|
260
1488
|
|
261
|
-
<li class="never" data-hits="" data-linenumber="
|
1489
|
+
<li class="never" data-hits="" data-linenumber="100">
|
262
1490
|
|
263
1491
|
|
264
|
-
<code class="ruby"
|
1492
|
+
<code class="ruby"></code>
|
265
1493
|
</li>
|
266
1494
|
|
267
|
-
<li class="
|
268
|
-
|
1495
|
+
<li class="covered" data-hits="19" data-linenumber="101">
|
1496
|
+
<span class="hits">19</span>
|
269
1497
|
|
270
|
-
<code class="ruby"
|
1498
|
+
<code class="ruby"> return type.to_proc.call(val) if type.is_a?(Symbol) || type.is_a?(String)</code>
|
271
1499
|
</li>
|
272
1500
|
|
273
|
-
<li class="never" data-hits="" data-linenumber="
|
1501
|
+
<li class="never" data-hits="" data-linenumber="102">
|
274
1502
|
|
275
1503
|
|
276
|
-
<code class="ruby"
|
1504
|
+
<code class="ruby"> #could be a proc</code>
|
277
1505
|
</li>
|
278
1506
|
|
279
|
-
<li class="never" data-hits="" data-linenumber="
|
1507
|
+
<li class="never" data-hits="" data-linenumber="103">
|
280
1508
|
|
281
1509
|
|
282
|
-
<code class="ruby"
|
1510
|
+
<code class="ruby"></code>
|
283
1511
|
</li>
|
284
1512
|
|
285
|
-
<li class="covered" data-hits="
|
286
|
-
<span class="hits">
|
1513
|
+
<li class="covered" data-hits="17" data-linenumber="104">
|
1514
|
+
<span class="hits">17</span>
|
287
1515
|
|
288
|
-
<code class="ruby">
|
1516
|
+
<code class="ruby"> return type.call(val) if type.respond_to?(:call)</code>
|
289
1517
|
</li>
|
290
1518
|
|
291
|
-
<li class="never" data-hits="" data-linenumber="
|
1519
|
+
<li class="never" data-hits="" data-linenumber="105">
|
292
1520
|
|
293
1521
|
|
294
|
-
<code class="ruby"> #
|
1522
|
+
<code class="ruby"> #nothing but simple types left</code>
|
295
1523
|
</li>
|
296
1524
|
|
297
|
-
<li class="covered" data-hits="
|
298
|
-
<span class="hits">
|
1525
|
+
<li class="covered" data-hits="16" data-linenumber="106">
|
1526
|
+
<span class="hits">16</span>
|
299
1527
|
|
300
|
-
<code class="ruby">
|
1528
|
+
<code class="ruby"> return val if val.is_a?(type)</code>
|
301
1529
|
</li>
|
302
1530
|
|
303
|
-
<li class="covered" data-hits="
|
304
|
-
<span class="hits">
|
1531
|
+
<li class="covered" data-hits="5" data-linenumber="107">
|
1532
|
+
<span class="hits">5</span>
|
305
1533
|
|
306
|
-
<code class="ruby">
|
1534
|
+
<code class="ruby"> return Integer(val) if type == Integer</code>
|
307
1535
|
</li>
|
308
1536
|
|
309
|
-
<li class="covered" data-hits="
|
310
|
-
<span class="hits">
|
1537
|
+
<li class="covered" data-hits="4" data-linenumber="108">
|
1538
|
+
<span class="hits">4</span>
|
311
1539
|
|
312
|
-
<code class="ruby">
|
1540
|
+
<code class="ruby"> return Float(val) if type == Float</code>
|
313
1541
|
</li>
|
314
1542
|
|
315
|
-
<li class="
|
316
|
-
|
1543
|
+
<li class="covered" data-hits="3" data-linenumber="109">
|
1544
|
+
<span class="hits">3</span>
|
317
1545
|
|
318
|
-
<code class="ruby">
|
1546
|
+
<code class="ruby"> return String(val) if type == String</code>
|
319
1547
|
</li>
|
320
1548
|
|
321
|
-
<li class="covered" data-hits="
|
322
|
-
<span class="hits">
|
1549
|
+
<li class="covered" data-hits="2" data-linenumber="110">
|
1550
|
+
<span class="hits">2</span>
|
323
1551
|
|
324
|
-
<code class="ruby">
|
1552
|
+
<code class="ruby"> return Date.parse(val) if type == Date</code>
|
325
1553
|
</li>
|
326
1554
|
|
327
|
-
<li class="
|
328
|
-
|
1555
|
+
<li class="covered" data-hits="2" data-linenumber="111">
|
1556
|
+
<span class="hits">2</span>
|
329
1557
|
|
330
|
-
<code class="ruby">
|
1558
|
+
<code class="ruby"> return Time.parse(val) if type == Time</code>
|
331
1559
|
</li>
|
332
1560
|
|
333
|
-
<li class="
|
334
|
-
|
1561
|
+
<li class="covered" data-hits="2" data-linenumber="112">
|
1562
|
+
<span class="hits">2</span>
|
335
1563
|
|
336
|
-
<code class="ruby">
|
1564
|
+
<code class="ruby"> return DateTime.parse(val) if type == DateTime</code>
|
337
1565
|
</li>
|
338
1566
|
|
339
|
-
<li class="
|
1567
|
+
<li class="covered" data-hits="2" data-linenumber="113">
|
1568
|
+
<span class="hits">2</span>
|
340
1569
|
|
1570
|
+
<code class="ruby"> return Array(val.split(opts[:delimiter] || ',')) if type == Array</code>
|
1571
|
+
</li>
|
1572
|
+
|
1573
|
+
<li class="covered" data-hits="10" data-linenumber="114">
|
1574
|
+
<span class="hits">10</span>
|
341
1575
|
|
342
|
-
<code class="ruby">
|
1576
|
+
<code class="ruby"> return Hash[val.gsub(/[{}]/, '').gsub('}', '').split(opts[:delimiter] || ',').map { |c| c.split(opts[:separator] ||':').map { |i| i.strip } }] if type == Hash</code>
|
343
1577
|
</li>
|
344
1578
|
|
345
|
-
<li class="never" data-hits="" data-linenumber="
|
1579
|
+
<li class="never" data-hits="" data-linenumber="115">
|
346
1580
|
|
347
1581
|
|
348
1582
|
<code class="ruby"></code>
|
349
1583
|
</li>
|
350
1584
|
|
351
|
-
<li class="
|
352
|
-
|
1585
|
+
<li class="missed" data-hits="0" data-linenumber="116">
|
1586
|
+
|
353
1587
|
|
354
|
-
<code class="ruby">
|
1588
|
+
<code class="ruby"> raise CoercionError("Unable to coerce #{val} to #{type}")</code>
|
355
1589
|
</li>
|
356
1590
|
|
357
|
-
<li class="
|
358
|
-
|
1591
|
+
<li class="never" data-hits="" data-linenumber="117">
|
1592
|
+
|
359
1593
|
|
360
|
-
<code class="ruby">
|
1594
|
+
<code class="ruby"> end</code>
|
361
1595
|
</li>
|
362
1596
|
|
363
|
-
<li class="never" data-hits="" data-linenumber="
|
1597
|
+
<li class="never" data-hits="" data-linenumber="118">
|
364
1598
|
|
365
1599
|
|
366
|
-
<code class="ruby">
|
1600
|
+
<code class="ruby"> end</code>
|
367
1601
|
</li>
|
368
1602
|
|
369
|
-
<li class="
|
370
|
-
|
1603
|
+
<li class="never" data-hits="" data-linenumber="119">
|
1604
|
+
|
371
1605
|
|
372
|
-
<code class="ruby">
|
1606
|
+
<code class="ruby">end</code>
|
373
1607
|
</li>
|
374
1608
|
|
375
|
-
|
1609
|
+
</ol>
|
1610
|
+
</pre>
|
1611
|
+
</div>
|
1612
|
+
|
1613
|
+
<div class="source_table" id="abb09c4ec783968d5f7a1a3adac854712f21ee1e">
|
1614
|
+
<div class="header">
|
1615
|
+
<h3>lib/hash_params/yaml_params.rb</h3>
|
1616
|
+
<h4><span class="red">12.5 %</span> covered</h4>
|
1617
|
+
<div>
|
1618
|
+
<b>40</b> relevant lines.
|
1619
|
+
<span class="green"><b>5</b> lines covered</span> and
|
1620
|
+
<span class="red"><b>35</b> lines missed.</span>
|
1621
|
+
</div>
|
1622
|
+
</div>
|
1623
|
+
|
1624
|
+
<pre>
|
1625
|
+
<ol>
|
1626
|
+
|
1627
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
376
1628
|
<span class="hits">1</span>
|
377
1629
|
|
378
|
-
<code class="ruby">
|
1630
|
+
<code class="ruby">module YamlParams</code>
|
379
1631
|
</li>
|
380
1632
|
|
381
|
-
<li class="never" data-hits="" data-linenumber="
|
1633
|
+
<li class="never" data-hits="" data-linenumber="2">
|
382
1634
|
|
383
1635
|
|
384
|
-
<code class="ruby"
|
1636
|
+
<code class="ruby"></code>
|
385
1637
|
</li>
|
386
1638
|
|
387
|
-
<li class="covered" data-hits="1" data-linenumber="
|
1639
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
388
1640
|
<span class="hits">1</span>
|
389
1641
|
|
390
|
-
<code class="ruby">
|
1642
|
+
<code class="ruby"> ENVIRONMENT = ENV['YAML_PARAMS_ENV'] || (defined?(HashParams) && HashParams::ENVIRONMENT) || 'development'</code>
|
391
1643
|
</li>
|
392
1644
|
|
393
|
-
<li class="never" data-hits="" data-linenumber="
|
1645
|
+
<li class="never" data-hits="" data-linenumber="4">
|
394
1646
|
|
395
1647
|
|
396
|
-
<code class="ruby"
|
1648
|
+
<code class="ruby"></code>
|
397
1649
|
</li>
|
398
1650
|
|
399
|
-
<li class="
|
400
|
-
|
1651
|
+
<li class="covered" data-hits="1" data-linenumber="5">
|
1652
|
+
<span class="hits">1</span>
|
401
1653
|
|
402
|
-
<code class="ruby">
|
1654
|
+
<code class="ruby"> def self.autoconfig(opts={})</code>
|
403
1655
|
</li>
|
404
1656
|
|
405
|
-
<li class="never" data-hits="" data-linenumber="
|
1657
|
+
<li class="never" data-hits="" data-linenumber="6">
|
406
1658
|
|
407
1659
|
|
408
1660
|
<code class="ruby"></code>
|
409
1661
|
</li>
|
410
1662
|
|
411
|
-
<li class="
|
412
|
-
<span class="hits">1</span>
|
1663
|
+
<li class="missed" data-hits="0" data-linenumber="7">
|
413
1664
|
|
414
|
-
|
1665
|
+
|
1666
|
+
<code class="ruby"> script_name = File.basename($0)</code>
|
415
1667
|
</li>
|
416
1668
|
|
417
|
-
<li class="
|
418
|
-
|
1669
|
+
<li class="missed" data-hits="0" data-linenumber="8">
|
1670
|
+
|
419
1671
|
|
420
|
-
<code class="ruby">
|
1672
|
+
<code class="ruby"> script_dir = File.dirname($0)</code>
|
421
1673
|
</li>
|
422
1674
|
|
423
|
-
<li class="
|
424
|
-
<span class="hits">14</span>
|
1675
|
+
<li class="missed" data-hits="0" data-linenumber="9">
|
425
1676
|
|
426
|
-
|
1677
|
+
|
1678
|
+
<code class="ruby"> home_dir = File.expand_path('~')</code>
|
427
1679
|
</li>
|
428
1680
|
|
429
|
-
<li class="
|
1681
|
+
<li class="missed" data-hits="0" data-linenumber="10">
|
430
1682
|
|
431
1683
|
|
432
|
-
<code class="ruby"
|
1684
|
+
<code class="ruby"> host_name = Socket.gethostname</code>
|
433
1685
|
</li>
|
434
1686
|
|
435
|
-
<li class="
|
436
|
-
|
1687
|
+
<li class="missed" data-hits="0" data-linenumber="11">
|
1688
|
+
|
437
1689
|
|
438
|
-
<code class="ruby">
|
1690
|
+
<code class="ruby"> special_file_names = opts.delete(:files)</code>
|
439
1691
|
</li>
|
440
1692
|
|
441
|
-
<li class="
|
1693
|
+
<li class="missed" data-hits="0" data-linenumber="12">
|
442
1694
|
|
443
1695
|
|
444
|
-
<code class="ruby"
|
1696
|
+
<code class="ruby"> special_file_names = Array(special_file_names && special_file_names.is_a?(String) && special_file_names.split(','))</code>
|
445
1697
|
</li>
|
446
1698
|
|
447
|
-
<li class="
|
448
|
-
|
1699
|
+
<li class="missed" data-hits="0" data-linenumber="13">
|
1700
|
+
|
449
1701
|
|
450
|
-
<code class="ruby">
|
1702
|
+
<code class="ruby"> special_roots = opts.delete(:roots)</code>
|
451
1703
|
</li>
|
452
1704
|
|
453
|
-
<li class="
|
1705
|
+
<li class="missed" data-hits="0" data-linenumber="14">
|
454
1706
|
|
455
1707
|
|
456
|
-
<code class="ruby">
|
1708
|
+
<code class="ruby"> special_roots = Array(special_roots && special_roots.is_a?(String) && special_roots.split(','))</code>
|
457
1709
|
</li>
|
458
1710
|
|
459
|
-
<li class="
|
460
|
-
|
1711
|
+
<li class="missed" data-hits="0" data-linenumber="15">
|
1712
|
+
|
461
1713
|
|
462
|
-
<code class="ruby">
|
1714
|
+
<code class="ruby"> app_name = opts.delete(:app_name) || script_name</code>
|
463
1715
|
</li>
|
464
1716
|
|
465
|
-
<li class="
|
1717
|
+
<li class="missed" data-hits="0" data-linenumber="16">
|
466
1718
|
|
467
1719
|
|
468
|
-
<code class="ruby">
|
1720
|
+
<code class="ruby"> env = opts.delete(:env) || opts.delete(:environment) || ENVIRONMENT</code>
|
469
1721
|
</li>
|
470
1722
|
|
471
|
-
<li class="missed" data-hits="0" data-linenumber="
|
1723
|
+
<li class="missed" data-hits="0" data-linenumber="17">
|
472
1724
|
|
473
1725
|
|
474
|
-
<code class="ruby">
|
1726
|
+
<code class="ruby"> generated_hash = {}</code>
|
475
1727
|
</li>
|
476
1728
|
|
477
|
-
<li class="
|
1729
|
+
<li class="missed" data-hits="0" data-linenumber="18">
|
478
1730
|
|
479
1731
|
|
480
|
-
<code class="ruby">
|
1732
|
+
<code class="ruby"> all_file_names = []</code>
|
481
1733
|
</li>
|
482
1734
|
|
483
|
-
<li class="
|
484
|
-
<span class="hits">1</span>
|
1735
|
+
<li class="never" data-hits="" data-linenumber="19">
|
485
1736
|
|
486
|
-
|
1737
|
+
|
1738
|
+
<code class="ruby"></code>
|
487
1739
|
</li>
|
488
1740
|
|
489
|
-
<li class="
|
490
|
-
<span class="hits">1</span>
|
1741
|
+
<li class="never" data-hits="" data-linenumber="20">
|
491
1742
|
|
492
|
-
|
1743
|
+
|
1744
|
+
<code class="ruby"></code>
|
493
1745
|
</li>
|
494
1746
|
|
495
|
-
<li class="never" data-hits="" data-linenumber="
|
1747
|
+
<li class="never" data-hits="" data-linenumber="21">
|
496
1748
|
|
497
1749
|
|
498
|
-
<code class="ruby">
|
1750
|
+
<code class="ruby"> #Sequence is important when constructing this list as later files will override the earlier ones</code>
|
499
1751
|
</li>
|
500
1752
|
|
501
|
-
<li class="
|
502
|
-
<span class="hits">1</span>
|
1753
|
+
<li class="missed" data-hits="0" data-linenumber="22">
|
503
1754
|
|
504
|
-
|
1755
|
+
|
1756
|
+
<code class="ruby"> generic_file_names = %W(</code>
|
505
1757
|
</li>
|
506
1758
|
|
507
|
-
<li class="never" data-hits="" data-linenumber="
|
1759
|
+
<li class="never" data-hits="" data-linenumber="23">
|
508
1760
|
|
509
1761
|
|
510
|
-
<code class="ruby">
|
1762
|
+
<code class="ruby"> settings.yml</code>
|
511
1763
|
</li>
|
512
1764
|
|
513
|
-
<li class="
|
514
|
-
<span class="hits">1</span>
|
1765
|
+
<li class="never" data-hits="" data-linenumber="24">
|
515
1766
|
|
516
|
-
|
1767
|
+
|
1768
|
+
<code class="ruby"> config.yml</code>
|
517
1769
|
</li>
|
518
1770
|
|
519
|
-
<li class="never" data-hits="" data-linenumber="
|
1771
|
+
<li class="never" data-hits="" data-linenumber="25">
|
520
1772
|
|
521
1773
|
|
522
|
-
<code class="ruby">
|
1774
|
+
<code class="ruby"> default.yml</code>
|
523
1775
|
</li>
|
524
1776
|
|
525
|
-
<li class="
|
526
|
-
|
1777
|
+
<li class="never" data-hits="" data-linenumber="26">
|
1778
|
+
|
527
1779
|
|
528
|
-
<code class="ruby">
|
1780
|
+
<code class="ruby"> #{env}.yml</code>
|
529
1781
|
</li>
|
530
1782
|
|
531
|
-
<li class="never" data-hits="" data-linenumber="
|
1783
|
+
<li class="never" data-hits="" data-linenumber="27">
|
532
1784
|
|
533
1785
|
|
534
|
-
<code class="ruby">
|
1786
|
+
<code class="ruby"> #{host_name}.yml</code>
|
535
1787
|
</li>
|
536
1788
|
|
537
|
-
<li class="
|
538
|
-
<span class="hits">1</span>
|
1789
|
+
<li class="never" data-hits="" data-linenumber="28">
|
539
1790
|
|
540
|
-
|
1791
|
+
|
1792
|
+
<code class="ruby"> #{host_name}_#{env}.yml</code>
|
541
1793
|
</li>
|
542
1794
|
|
543
|
-
<li class="never" data-hits="" data-linenumber="
|
1795
|
+
<li class="never" data-hits="" data-linenumber="29">
|
544
1796
|
|
545
1797
|
|
546
|
-
<code class="ruby">
|
1798
|
+
<code class="ruby"> local.yml</code>
|
547
1799
|
</li>
|
548
1800
|
|
549
|
-
<li class="
|
550
|
-
|
1801
|
+
<li class="never" data-hits="" data-linenumber="30">
|
1802
|
+
|
551
1803
|
|
552
|
-
<code class="ruby">
|
1804
|
+
<code class="ruby"> local_#{env}.yml</code>
|
553
1805
|
</li>
|
554
1806
|
|
555
|
-
<li class="never" data-hits="" data-linenumber="
|
1807
|
+
<li class="never" data-hits="" data-linenumber="31">
|
556
1808
|
|
557
1809
|
|
558
|
-
<code class="ruby">
|
1810
|
+
<code class="ruby"> settings.local.yml</code>
|
559
1811
|
</li>
|
560
1812
|
|
561
|
-
<li class="
|
562
|
-
|
1813
|
+
<li class="never" data-hits="" data-linenumber="32">
|
1814
|
+
|
563
1815
|
|
564
|
-
<code class="ruby">
|
1816
|
+
<code class="ruby"> settings.local_#{env}.yml</code>
|
565
1817
|
</li>
|
566
1818
|
|
567
|
-
<li class="never" data-hits="" data-linenumber="
|
1819
|
+
<li class="never" data-hits="" data-linenumber="33">
|
568
1820
|
|
569
1821
|
|
570
|
-
<code class="ruby">
|
1822
|
+
<code class="ruby"> config.local.yml</code>
|
571
1823
|
</li>
|
572
1824
|
|
573
|
-
<li class="
|
574
|
-
|
1825
|
+
<li class="never" data-hits="" data-linenumber="34">
|
1826
|
+
|
575
1827
|
|
576
|
-
<code class="ruby">
|
1828
|
+
<code class="ruby"> config.local_#{env}.yml</code>
|
577
1829
|
</li>
|
578
1830
|
|
579
|
-
<li class="never" data-hits="" data-linenumber="
|
1831
|
+
<li class="never" data-hits="" data-linenumber="35">
|
580
1832
|
|
581
1833
|
|
582
|
-
<code class="ruby">
|
1834
|
+
<code class="ruby"> )</code>
|
583
1835
|
</li>
|
584
1836
|
|
585
|
-
<li class="
|
586
|
-
<span class="hits">23</span>
|
1837
|
+
<li class="never" data-hits="" data-linenumber="36">
|
587
1838
|
|
588
|
-
|
1839
|
+
|
1840
|
+
<code class="ruby"> #prepend the app name to the default file names</code>
|
589
1841
|
</li>
|
590
1842
|
|
591
|
-
<li class="
|
592
|
-
<span class="hits">1</span>
|
1843
|
+
<li class="missed" data-hits="0" data-linenumber="37">
|
593
1844
|
|
594
|
-
|
1845
|
+
|
1846
|
+
<code class="ruby"> app_file_names = generic_file_names.map { |f| "#{app_name}_#{f}" }</code>
|
595
1847
|
</li>
|
596
1848
|
|
597
|
-
<li class="
|
598
|
-
|
1849
|
+
<li class="never" data-hits="" data-linenumber="38">
|
1850
|
+
|
599
1851
|
|
600
|
-
<code class="ruby"
|
1852
|
+
<code class="ruby"></code>
|
601
1853
|
</li>
|
602
1854
|
|
603
|
-
<li class="
|
1855
|
+
<li class="missed" data-hits="0" data-linenumber="39">
|
604
1856
|
|
605
1857
|
|
606
|
-
<code class="ruby">
|
1858
|
+
<code class="ruby"> default_roots = [</code>
|
607
1859
|
</li>
|
608
1860
|
|
609
|
-
<li class="never" data-hits="" data-linenumber="
|
1861
|
+
<li class="never" data-hits="" data-linenumber="40">
|
610
1862
|
|
611
1863
|
|
612
|
-
<code class="ruby">
|
1864
|
+
<code class="ruby"> script_dir,</code>
|
613
1865
|
</li>
|
614
1866
|
|
615
|
-
<li class="never" data-hits="" data-linenumber="
|
1867
|
+
<li class="never" data-hits="" data-linenumber="41">
|
616
1868
|
|
617
1869
|
|
618
|
-
<code class="ruby"
|
1870
|
+
<code class="ruby"> File.join('/etc', app_name.to_s),</code>
|
619
1871
|
</li>
|
620
1872
|
|
621
|
-
<li class="never" data-hits="" data-linenumber="
|
1873
|
+
<li class="never" data-hits="" data-linenumber="42">
|
622
1874
|
|
623
1875
|
|
624
|
-
<code class="ruby">
|
1876
|
+
<code class="ruby"> File.join('/usr', 'local', 'etc', app_name.to_s),</code>
|
625
1877
|
</li>
|
626
1878
|
|
627
|
-
<li class="
|
628
|
-
|
1879
|
+
<li class="never" data-hits="" data-linenumber="43">
|
1880
|
+
|
629
1881
|
|
630
|
-
<code class="ruby">
|
1882
|
+
<code class="ruby"> File.join(home_dir, 'etc', app_name.to_s),</code>
|
631
1883
|
</li>
|
632
1884
|
|
633
|
-
<li class="never" data-hits="" data-linenumber="
|
1885
|
+
<li class="never" data-hits="" data-linenumber="44">
|
634
1886
|
|
635
1887
|
|
636
|
-
<code class="ruby">
|
1888
|
+
<code class="ruby"> File.join(home_dir, ".#{app_name}"),</code>
|
637
1889
|
</li>
|
638
1890
|
|
639
|
-
<li class="never" data-hits="" data-linenumber="
|
1891
|
+
<li class="never" data-hits="" data-linenumber="45">
|
640
1892
|
|
641
1893
|
|
642
|
-
<code class="ruby"
|
1894
|
+
<code class="ruby"> File.join(home_dir, '.hash_params', app_name.to_s),</code>
|
643
1895
|
</li>
|
644
1896
|
|
645
|
-
<li class="never" data-hits="" data-linenumber="
|
1897
|
+
<li class="never" data-hits="" data-linenumber="46">
|
646
1898
|
|
647
1899
|
|
648
|
-
<code class="ruby"
|
1900
|
+
<code class="ruby"> File.join(script_dir, 'config'),</code>
|
649
1901
|
</li>
|
650
1902
|
|
651
|
-
<li class="
|
652
|
-
<span class="hits">1</span>
|
1903
|
+
<li class="never" data-hits="" data-linenumber="47">
|
653
1904
|
|
654
|
-
|
1905
|
+
|
1906
|
+
<code class="ruby"> File.join(script_dir, 'settings')</code>
|
655
1907
|
</li>
|
656
1908
|
|
657
|
-
<li class="never" data-hits="" data-linenumber="
|
1909
|
+
<li class="never" data-hits="" data-linenumber="48">
|
658
1910
|
|
659
1911
|
|
660
|
-
<code class="ruby"
|
1912
|
+
<code class="ruby"> ]</code>
|
661
1913
|
</li>
|
662
1914
|
|
663
|
-
<li class="
|
1915
|
+
<li class="missed" data-hits="0" data-linenumber="49">
|
664
1916
|
|
665
1917
|
|
666
|
-
<code class="ruby">
|
1918
|
+
<code class="ruby"> if defined?(Rails)</code>
|
667
1919
|
</li>
|
668
1920
|
|
669
|
-
<li class="
|
1921
|
+
<li class="missed" data-hits="0" data-linenumber="50">
|
670
1922
|
|
671
1923
|
|
672
|
-
<code class="ruby">
|
1924
|
+
<code class="ruby"> default_roots << Rails.root.join('config')</code>
|
673
1925
|
</li>
|
674
1926
|
|
675
|
-
<li class="
|
676
|
-
|
1927
|
+
<li class="never" data-hits="" data-linenumber="51">
|
1928
|
+
|
677
1929
|
|
678
|
-
<code class="ruby">
|
1930
|
+
<code class="ruby"> end</code>
|
679
1931
|
</li>
|
680
1932
|
|
681
|
-
<li class="never" data-hits="" data-linenumber="
|
1933
|
+
<li class="never" data-hits="" data-linenumber="52">
|
682
1934
|
|
683
1935
|
|
684
1936
|
<code class="ruby"></code>
|
685
1937
|
</li>
|
686
1938
|
|
687
|
-
<li class="never" data-hits="" data-linenumber="
|
1939
|
+
<li class="never" data-hits="" data-linenumber="53">
|
688
1940
|
|
689
1941
|
|
690
|
-
<code class="ruby"
|
1942
|
+
<code class="ruby"></code>
|
691
1943
|
</li>
|
692
1944
|
|
693
|
-
<li class="never" data-hits="" data-linenumber="
|
1945
|
+
<li class="never" data-hits="" data-linenumber="54">
|
694
1946
|
|
695
1947
|
|
696
|
-
<code class="ruby"> #
|
1948
|
+
<code class="ruby"> #process the /etc/app_name* files</code>
|
697
1949
|
</li>
|
698
1950
|
|
699
|
-
<li class="
|
700
|
-
<span class="hits">9</span>
|
1951
|
+
<li class="missed" data-hits="0" data-linenumber="55">
|
701
1952
|
|
702
|
-
|
1953
|
+
|
1954
|
+
<code class="ruby"> app_file_names.each do |fname|</code>
|
703
1955
|
</li>
|
704
1956
|
|
705
|
-
<li class="
|
706
|
-
<span class="hits">2</span>
|
1957
|
+
<li class="missed" data-hits="0" data-linenumber="56">
|
707
1958
|
|
708
|
-
|
1959
|
+
|
1960
|
+
<code class="ruby"> all_file_names << File.join('/etc', fname)</code>
|
709
1961
|
</li>
|
710
1962
|
|
711
|
-
<li class="
|
712
|
-
|
1963
|
+
<li class="never" data-hits="" data-linenumber="57">
|
1964
|
+
|
713
1965
|
|
714
|
-
<code class="ruby">
|
1966
|
+
<code class="ruby"> end</code>
|
715
1967
|
</li>
|
716
1968
|
|
717
|
-
<li class="
|
718
|
-
<span class="hits">1</span>
|
1969
|
+
<li class="never" data-hits="" data-linenumber="58">
|
719
1970
|
|
720
|
-
|
1971
|
+
|
1972
|
+
<code class="ruby"> #now process the default roots which will override the above</code>
|
721
1973
|
</li>
|
722
1974
|
|
723
|
-
<li class="
|
1975
|
+
<li class="missed" data-hits="0" data-linenumber="59">
|
724
1976
|
|
725
1977
|
|
726
|
-
<code class="ruby"
|
1978
|
+
<code class="ruby"> (default_roots + special_roots).each do |root|</code>
|
727
1979
|
</li>
|
728
1980
|
|
729
|
-
<li class="
|
1981
|
+
<li class="missed" data-hits="0" data-linenumber="60">
|
730
1982
|
|
731
1983
|
|
732
|
-
<code class="ruby">
|
1984
|
+
<code class="ruby"> (generic_file_names + app_file_names + special_file_names).each do |fname|</code>
|
733
1985
|
</li>
|
734
1986
|
|
735
|
-
<li class="
|
1987
|
+
<li class="missed" data-hits="0" data-linenumber="61">
|
736
1988
|
|
737
1989
|
|
738
|
-
<code class="ruby">
|
1990
|
+
<code class="ruby"> all_file_names << File.join(root, fname)</code>
|
739
1991
|
</li>
|
740
1992
|
|
741
|
-
<li class="
|
1993
|
+
<li class="never" data-hits="" data-linenumber="62">
|
742
1994
|
|
743
1995
|
|
744
|
-
<code class="ruby">
|
1996
|
+
<code class="ruby"> end</code>
|
745
1997
|
</li>
|
746
1998
|
|
747
|
-
<li class="never" data-hits="" data-linenumber="
|
1999
|
+
<li class="never" data-hits="" data-linenumber="63">
|
748
2000
|
|
749
2001
|
|
750
2002
|
<code class="ruby"> end</code>
|
751
2003
|
</li>
|
752
2004
|
|
753
|
-
<li class="never" data-hits="" data-linenumber="
|
2005
|
+
<li class="never" data-hits="" data-linenumber="64">
|
754
2006
|
|
755
2007
|
|
756
|
-
<code class="ruby"
|
2008
|
+
<code class="ruby"></code>
|
757
2009
|
</li>
|
758
2010
|
|
759
|
-
<li class="
|
2011
|
+
<li class="missed" data-hits="0" data-linenumber="65">
|
760
2012
|
|
761
2013
|
|
762
|
-
<code class="ruby"
|
2014
|
+
<code class="ruby"> all_file_names.each do |file|</code>
|
763
2015
|
</li>
|
764
2016
|
|
765
|
-
<li class="
|
766
|
-
|
2017
|
+
<li class="missed" data-hits="0" data-linenumber="66">
|
2018
|
+
|
767
2019
|
|
768
|
-
<code class="ruby">
|
2020
|
+
<code class="ruby"> generated_hash = deep_merge(generated_hash, hash_from_yaml_file(file)) if File.exists?(file)</code>
|
769
2021
|
</li>
|
770
2022
|
|
771
|
-
<li class="never" data-hits="" data-linenumber="
|
2023
|
+
<li class="never" data-hits="" data-linenumber="67">
|
772
2024
|
|
773
2025
|
|
774
|
-
<code class="ruby">
|
2026
|
+
<code class="ruby"> end</code>
|
775
2027
|
</li>
|
776
2028
|
|
777
|
-
<li class="never" data-hits="" data-linenumber="
|
2029
|
+
<li class="never" data-hits="" data-linenumber="68">
|
778
2030
|
|
779
2031
|
|
780
2032
|
<code class="ruby"></code>
|
781
2033
|
</li>
|
782
2034
|
|
783
|
-
<li class="
|
784
|
-
<span class="hits">6</span>
|
2035
|
+
<li class="missed" data-hits="0" data-linenumber="69">
|
785
2036
|
|
786
|
-
|
2037
|
+
|
2038
|
+
<code class="ruby"> if block_given?</code>
|
787
2039
|
</li>
|
788
2040
|
|
789
|
-
<li class="
|
2041
|
+
<li class="missed" data-hits="0" data-linenumber="70">
|
790
2042
|
|
791
2043
|
|
792
|
-
<code class="ruby">
|
2044
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(generated_hash, opts, &Proc.new)</code>
|
793
2045
|
</li>
|
794
2046
|
|
795
|
-
<li class="
|
796
|
-
<span class="hits">5</span>
|
2047
|
+
<li class="never" data-hits="" data-linenumber="71">
|
797
2048
|
|
798
|
-
<code class="ruby"> return val if val.is_a?(type)</code>
|
799
|
-
</li>
|
800
|
-
|
801
|
-
<li class="covered" data-hits="4" data-linenumber="119">
|
802
|
-
<span class="hits">4</span>
|
803
2049
|
|
804
|
-
<code class="ruby">
|
2050
|
+
<code class="ruby"> else</code>
|
805
2051
|
</li>
|
806
2052
|
|
807
|
-
<li class="
|
808
|
-
<span class="hits">3</span>
|
2053
|
+
<li class="missed" data-hits="0" data-linenumber="72">
|
809
2054
|
|
810
|
-
<code class="ruby"> return Float(val) if type == Float</code>
|
811
|
-
</li>
|
812
|
-
|
813
|
-
<li class="covered" data-hits="2" data-linenumber="121">
|
814
|
-
<span class="hits">2</span>
|
815
2055
|
|
816
|
-
<code class="ruby">
|
2056
|
+
<code class="ruby"> HashParams::HashValidator.new.validate_hash(generated_hash, opts)</code>
|
817
2057
|
</li>
|
818
2058
|
|
819
|
-
<li class="
|
820
|
-
|
2059
|
+
<li class="never" data-hits="" data-linenumber="73">
|
2060
|
+
|
821
2061
|
|
822
|
-
<code class="ruby">
|
2062
|
+
<code class="ruby"> end</code>
|
823
2063
|
</li>
|
824
2064
|
|
825
|
-
<li class="
|
826
|
-
|
2065
|
+
<li class="never" data-hits="" data-linenumber="74">
|
2066
|
+
|
827
2067
|
|
828
|
-
<code class="ruby">
|
2068
|
+
<code class="ruby"> end</code>
|
829
2069
|
</li>
|
830
2070
|
|
831
|
-
<li class="
|
832
|
-
<span class="hits">2</span>
|
2071
|
+
<li class="never" data-hits="" data-linenumber="75">
|
833
2072
|
|
834
|
-
|
2073
|
+
|
2074
|
+
<code class="ruby"></code>
|
835
2075
|
</li>
|
836
2076
|
|
837
|
-
<li class="covered" data-hits="
|
838
|
-
<span class="hits">
|
2077
|
+
<li class="covered" data-hits="1" data-linenumber="76">
|
2078
|
+
<span class="hits">1</span>
|
839
2079
|
|
840
|
-
<code class="ruby">
|
2080
|
+
<code class="ruby"> def self.hash_from_yaml_file(filename, env=nil)</code>
|
841
2081
|
</li>
|
842
2082
|
|
843
|
-
<li class="
|
844
|
-
|
2083
|
+
<li class="missed" data-hits="0" data-linenumber="77">
|
2084
|
+
|
845
2085
|
|
846
|
-
<code class="ruby">
|
2086
|
+
<code class="ruby"> env ||= ENVIRONMENT</code>
|
847
2087
|
</li>
|
848
2088
|
|
849
|
-
<li class="
|
2089
|
+
<li class="missed" data-hits="0" data-linenumber="78">
|
850
2090
|
|
851
2091
|
|
852
|
-
<code class="ruby"
|
2092
|
+
<code class="ruby"> r = File.exists?(filename) ? YAML::load(ERB.new(File.read(filename)).result) : {}</code>
|
853
2093
|
</li>
|
854
2094
|
|
855
|
-
<li class="
|
2095
|
+
<li class="missed" data-hits="0" data-linenumber="79">
|
856
2096
|
|
857
2097
|
|
858
|
-
<code class="ruby">
|
2098
|
+
<code class="ruby"> r[env] || r</code>
|
859
2099
|
</li>
|
860
2100
|
|
861
|
-
<li class="never" data-hits="" data-linenumber="
|
2101
|
+
<li class="never" data-hits="" data-linenumber="80">
|
862
2102
|
|
863
2103
|
|
864
2104
|
<code class="ruby"> end</code>
|
865
2105
|
</li>
|
866
2106
|
|
867
|
-
<li class="never" data-hits="" data-linenumber="
|
2107
|
+
<li class="never" data-hits="" data-linenumber="81">
|
868
2108
|
|
869
2109
|
|
870
2110
|
<code class="ruby"></code>
|
871
2111
|
</li>
|
872
2112
|
|
873
|
-
<li class="covered" data-hits="1" data-linenumber="
|
874
|
-
<span class="hits">1</span>
|
875
|
-
|
876
|
-
<code class="ruby"> def valid?</code>
|
877
|
-
</li>
|
878
|
-
|
879
|
-
<li class="covered" data-hits="1" data-linenumber="132">
|
2113
|
+
<li class="covered" data-hits="1" data-linenumber="82">
|
880
2114
|
<span class="hits">1</span>
|
881
2115
|
|
882
|
-
<code class="ruby">
|
2116
|
+
<code class="ruby"> def self.deep_merge(hash, other_hash)</code>
|
883
2117
|
</li>
|
884
2118
|
|
885
|
-
<li class="
|
2119
|
+
<li class="missed" data-hits="0" data-linenumber="83">
|
886
2120
|
|
887
2121
|
|
888
|
-
<code class="ruby">
|
889
|
-
</li>
|
890
|
-
|
891
|
-
<li class="covered" data-hits="1" data-linenumber="134">
|
892
|
-
<span class="hits">1</span>
|
893
|
-
|
894
|
-
<code class="ruby"> def present?(object)</code>
|
2122
|
+
<code class="ruby"> if other_hash.is_a?(::Hash) && hash.is_a?(::Hash)</code>
|
895
2123
|
</li>
|
896
2124
|
|
897
|
-
<li class="missed" data-hits="0" data-linenumber="
|
2125
|
+
<li class="missed" data-hits="0" data-linenumber="84">
|
898
2126
|
|
899
2127
|
|
900
|
-
<code class="ruby">
|
2128
|
+
<code class="ruby"> other_hash.each do |k, v|</code>
|
901
2129
|
</li>
|
902
2130
|
|
903
|
-
<li class="
|
2131
|
+
<li class="missed" data-hits="0" data-linenumber="85">
|
904
2132
|
|
905
2133
|
|
906
|
-
<code class="ruby">
|
2134
|
+
<code class="ruby"> hash[k] = hash.key?(k) ? deep_merge(hash[k], v) : v</code>
|
907
2135
|
</li>
|
908
2136
|
|
909
|
-
<li class="never" data-hits="" data-linenumber="
|
2137
|
+
<li class="never" data-hits="" data-linenumber="86">
|
910
2138
|
|
911
2139
|
|
912
|
-
<code class="ruby"
|
2140
|
+
<code class="ruby"> end</code>
|
913
2141
|
</li>
|
914
2142
|
|
915
|
-
<li class="
|
916
|
-
<span class="hits">1</span>
|
2143
|
+
<li class="missed" data-hits="0" data-linenumber="87">
|
917
2144
|
|
918
|
-
|
2145
|
+
|
2146
|
+
<code class="ruby"> hash</code>
|
919
2147
|
</li>
|
920
2148
|
|
921
|
-
<li class="
|
2149
|
+
<li class="never" data-hits="" data-linenumber="88">
|
922
2150
|
|
923
2151
|
|
924
|
-
<code class="ruby">
|
2152
|
+
<code class="ruby"> else</code>
|
925
2153
|
</li>
|
926
2154
|
|
927
|
-
<li class="missed" data-hits="0" data-linenumber="
|
2155
|
+
<li class="missed" data-hits="0" data-linenumber="89">
|
928
2156
|
|
929
2157
|
|
930
|
-
<code class="ruby">
|
2158
|
+
<code class="ruby"> other_hash</code>
|
931
2159
|
</li>
|
932
2160
|
|
933
|
-
<li class="
|
2161
|
+
<li class="never" data-hits="" data-linenumber="90">
|
934
2162
|
|
935
2163
|
|
936
|
-
<code class="ruby">
|
2164
|
+
<code class="ruby"> end</code>
|
937
2165
|
</li>
|
938
2166
|
|
939
|
-
<li class="never" data-hits="" data-linenumber="
|
2167
|
+
<li class="never" data-hits="" data-linenumber="91">
|
940
2168
|
|
941
2169
|
|
942
2170
|
<code class="ruby"> end</code>
|
943
2171
|
</li>
|
944
2172
|
|
945
|
-
<li class="never" data-hits="" data-linenumber="
|
2173
|
+
<li class="never" data-hits="" data-linenumber="92">
|
946
2174
|
|
947
2175
|
|
948
2176
|
<code class="ruby"></code>
|
949
2177
|
</li>
|
950
2178
|
|
951
|
-
<li class="never" data-hits="" data-linenumber="
|
2179
|
+
<li class="never" data-hits="" data-linenumber="93">
|
952
2180
|
|
953
2181
|
|
954
2182
|
<code class="ruby">end</code>
|