hash_params 0.0.1
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 +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +37 -0
- data/LICENSE +19 -0
- data/README.md +174 -0
- data/Rakefile +11 -0
- data/coverage/assets/0.8.0/application.css +799 -0
- data/coverage/assets/0.8.0/application.js +1559 -0
- data/coverage/assets/0.8.0/colorbox/border.png +0 -0
- data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
- data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
- data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.8.0/favicon_green.png +0 -0
- data/coverage/assets/0.8.0/favicon_red.png +0 -0
- data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
- data/coverage/assets/0.8.0/loading.gif +0 -0
- data/coverage/assets/0.8.0/magnify.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +964 -0
- data/hash_params.gemspec +27 -0
- data/lib/hash_params.rb +157 -0
- data/spec/hash_params_spec.rb +86 -0
- data/spec/spec_helper.rb +24 -0
- metadata +152 -0
data/coverage/index.html
ADDED
@@ -0,0 +1,964 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
+
<head>
|
4
|
+
<title>Code coverage for Hash param</title>
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
6
|
+
<script src='./assets/0.8.0/application.js' type='text/javascript'></script>
|
7
|
+
<link href='./assets/0.8.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
|
8
|
+
<link rel="shortcut icon" type="image/png" href="./assets/0.8.0/favicon_green.png" />
|
9
|
+
<link rel="icon" type="image/png" href="./assets/0.8.0/favicon.png" />
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<body>
|
13
|
+
<div id="loading">
|
14
|
+
<img src="./assets/0.8.0/loading.gif" alt="loading"/>
|
15
|
+
</div>
|
16
|
+
<div id="wrapper" style="display:none;">
|
17
|
+
<div class="timestamp">Generated <abbr class="timeago" title="2014-07-23T16:04:30+12:00">2014-07-23T16:04:30+12:00</abbr></div>
|
18
|
+
<ul class="group_tabs"></ul>
|
19
|
+
|
20
|
+
<div id="content">
|
21
|
+
<div class="file_list_container" id="AllFiles">
|
22
|
+
<h2>
|
23
|
+
<span class="group_name">All Files</span>
|
24
|
+
(<span class="covered_percent"><span class="green">90.41%</span></span>
|
25
|
+
covered at
|
26
|
+
<span class="covered_strength">
|
27
|
+
<span class="green">
|
28
|
+
5.1
|
29
|
+
</span>
|
30
|
+
</span> hits/line)
|
31
|
+
</h2>
|
32
|
+
<a name="AllFiles"></a>
|
33
|
+
<div>
|
34
|
+
<b>1</b> files in total.
|
35
|
+
<b>73</b> relevant lines.
|
36
|
+
<span class="green"><b>66</b> lines covered</span> and
|
37
|
+
<span class="red"><b>7</b> lines missed </span>
|
38
|
+
</div>
|
39
|
+
<table class="file_list">
|
40
|
+
<thead>
|
41
|
+
<tr>
|
42
|
+
<th>File</th>
|
43
|
+
<th>% covered</th>
|
44
|
+
<th>Lines</th>
|
45
|
+
<th>Relevant Lines</th>
|
46
|
+
<th>Lines covered</th>
|
47
|
+
<th>Lines missed</th>
|
48
|
+
<th>Avg. Hits / Line</th>
|
49
|
+
</tr>
|
50
|
+
</thead>
|
51
|
+
<tbody>
|
52
|
+
|
53
|
+
<tr>
|
54
|
+
<td class="strong"><a href="#cd179921d0f6beb52ad4857e1e0facafefb4d8a3" class="src_link" title="lib/hash_params.rb">lib/hash_params.rb</a></td>
|
55
|
+
<td class="green strong">90.41 %</td>
|
56
|
+
<td>144</td>
|
57
|
+
<td>73</td>
|
58
|
+
<td>66</td>
|
59
|
+
<td>7</td>
|
60
|
+
<td>5.1</td>
|
61
|
+
</tr>
|
62
|
+
|
63
|
+
</tbody>
|
64
|
+
</table>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<div id="footer">
|
72
|
+
Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.9.0
|
73
|
+
and simplecov-html v0.8.0<br/>
|
74
|
+
using RSpec
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<div class="source_files">
|
78
|
+
|
79
|
+
<div class="source_table" id="cd179921d0f6beb52ad4857e1e0facafefb4d8a3">
|
80
|
+
<div class="header">
|
81
|
+
<h3>lib/hash_params.rb</h3>
|
82
|
+
<h4><span class="green">90.41 %</span> covered</h4>
|
83
|
+
<div>
|
84
|
+
<b>73</b> relevant lines.
|
85
|
+
<span class="green"><b>66</b> lines covered</span> and
|
86
|
+
<span class="red"><b>7</b> lines missed.</span>
|
87
|
+
</div>
|
88
|
+
</div>
|
89
|
+
|
90
|
+
<pre>
|
91
|
+
<ol>
|
92
|
+
|
93
|
+
<li class="covered" data-hits="1" data-linenumber="1">
|
94
|
+
<span class="hits">1</span>
|
95
|
+
|
96
|
+
<code class="ruby">class HashParams < Hash</code>
|
97
|
+
</li>
|
98
|
+
|
99
|
+
<li class="covered" data-hits="1" data-linenumber="2">
|
100
|
+
<span class="hits">1</span>
|
101
|
+
|
102
|
+
<code class="ruby"> VERSION = '0.0.1'</code>
|
103
|
+
</li>
|
104
|
+
|
105
|
+
<li class="covered" data-hits="1" data-linenumber="3">
|
106
|
+
<span class="hits">1</span>
|
107
|
+
|
108
|
+
<code class="ruby"> attr :valid, :errors</code>
|
109
|
+
</li>
|
110
|
+
|
111
|
+
<li class="never" data-hits="" data-linenumber="4">
|
112
|
+
|
113
|
+
|
114
|
+
<code class="ruby"></code>
|
115
|
+
</li>
|
116
|
+
|
117
|
+
<li class="covered" data-hits="1" data-linenumber="5">
|
118
|
+
<span class="hits">1</span>
|
119
|
+
|
120
|
+
<code class="ruby"> def initialize(opts={}, injection_target =nil, &code)</code>
|
121
|
+
</li>
|
122
|
+
|
123
|
+
<li class="covered" data-hits="2" data-linenumber="6">
|
124
|
+
<span class="hits">2</span>
|
125
|
+
|
126
|
+
<code class="ruby"> @incoming_hash = opts</code>
|
127
|
+
</li>
|
128
|
+
|
129
|
+
<li class="covered" data-hits="2" data-linenumber="7">
|
130
|
+
<span class="hits">2</span>
|
131
|
+
|
132
|
+
<code class="ruby"> @errors =[]</code>
|
133
|
+
</li>
|
134
|
+
|
135
|
+
<li class="never" data-hits="" data-linenumber="8">
|
136
|
+
|
137
|
+
|
138
|
+
<code class="ruby"> # @parent = code.binding.eval 'self'</code>
|
139
|
+
</li>
|
140
|
+
|
141
|
+
<li class="covered" data-hits="2" data-linenumber="9">
|
142
|
+
<span class="hits">2</span>
|
143
|
+
|
144
|
+
<code class="ruby"> @target =injection_target</code>
|
145
|
+
</li>
|
146
|
+
|
147
|
+
<li class="covered" data-hits="2" data-linenumber="10">
|
148
|
+
<span class="hits">2</span>
|
149
|
+
|
150
|
+
<code class="ruby"> instance_eval(&code)</code>
|
151
|
+
</li>
|
152
|
+
|
153
|
+
<li class="covered" data-hits="2" data-linenumber="11">
|
154
|
+
<span class="hits">2</span>
|
155
|
+
|
156
|
+
<code class="ruby"> @valid = (@errors.size == 0)</code>
|
157
|
+
</li>
|
158
|
+
|
159
|
+
<li class="never" data-hits="" data-linenumber="12">
|
160
|
+
|
161
|
+
|
162
|
+
<code class="ruby"> end</code>
|
163
|
+
</li>
|
164
|
+
|
165
|
+
<li class="never" data-hits="" data-linenumber="13">
|
166
|
+
|
167
|
+
|
168
|
+
<code class="ruby"></code>
|
169
|
+
</li>
|
170
|
+
|
171
|
+
<li class="covered" data-hits="1" data-linenumber="14">
|
172
|
+
<span class="hits">1</span>
|
173
|
+
|
174
|
+
<code class="ruby"> def param(key, h = {})</code>
|
175
|
+
</li>
|
176
|
+
|
177
|
+
<li class="never" data-hits="" data-linenumber="15">
|
178
|
+
|
179
|
+
|
180
|
+
<code class="ruby"></code>
|
181
|
+
</li>
|
182
|
+
|
183
|
+
<li class="never" data-hits="" data-linenumber="16">
|
184
|
+
|
185
|
+
|
186
|
+
<code class="ruby"> #What happens if value is FalseClass ? Need something a little better</code>
|
187
|
+
</li>
|
188
|
+
|
189
|
+
<li class="never" data-hits="" data-linenumber="17">
|
190
|
+
|
191
|
+
|
192
|
+
<code class="ruby"></code>
|
193
|
+
</li>
|
194
|
+
|
195
|
+
<li class="covered" data-hits="15" data-linenumber="18">
|
196
|
+
<span class="hits">15</span>
|
197
|
+
|
198
|
+
<code class="ruby"> val = @incoming_hash[key] || @incoming_hash[key.to_sym] || @incoming_hash[key.to_s]</code>
|
199
|
+
</li>
|
200
|
+
|
201
|
+
<li class="covered" data-hits="15" data-linenumber="19">
|
202
|
+
<span class="hits">15</span>
|
203
|
+
|
204
|
+
<code class="ruby"> if val.nil? && h[:default]</code>
|
205
|
+
</li>
|
206
|
+
|
207
|
+
<li class="covered" data-hits="3" data-linenumber="20">
|
208
|
+
<span class="hits">3</span>
|
209
|
+
|
210
|
+
<code class="ruby"> val = h[:default].respond_to?(:call) ? h[:default].call(self) : h[:default]</code>
|
211
|
+
</li>
|
212
|
+
|
213
|
+
<li class="never" data-hits="" data-linenumber="21">
|
214
|
+
|
215
|
+
|
216
|
+
<code class="ruby"> end</code>
|
217
|
+
</li>
|
218
|
+
|
219
|
+
<li class="never" data-hits="" data-linenumber="22">
|
220
|
+
|
221
|
+
|
222
|
+
<code class="ruby"></code>
|
223
|
+
</li>
|
224
|
+
|
225
|
+
<li class="never" data-hits="" data-linenumber="23">
|
226
|
+
|
227
|
+
|
228
|
+
<code class="ruby"> #don't bother with the rest if required parameter is missing</code>
|
229
|
+
</li>
|
230
|
+
|
231
|
+
<li class="covered" data-hits="15" data-linenumber="24">
|
232
|
+
<span class="hits">15</span>
|
233
|
+
|
234
|
+
<code class="ruby"> return @errors << "Parameter #{key} is required and missing" if h[:required] && val.nil?</code>
|
235
|
+
</li>
|
236
|
+
|
237
|
+
<li class="never" data-hits="" data-linenumber="25">
|
238
|
+
|
239
|
+
|
240
|
+
<code class="ruby"> #do all coercion and transformation first there could be an array of coersions they will be run in order</code>
|
241
|
+
</li>
|
242
|
+
|
243
|
+
<li class="never" data-hits="" data-linenumber="26">
|
244
|
+
|
245
|
+
|
246
|
+
<code class="ruby"></code>
|
247
|
+
</li>
|
248
|
+
|
249
|
+
<li class="covered" data-hits="14" data-linenumber="27">
|
250
|
+
<span class="hits">14</span>
|
251
|
+
|
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
|
+
|
258
|
+
<code class="ruby"> val = coerce(val, c, h)</code>
|
259
|
+
</li>
|
260
|
+
|
261
|
+
<li class="never" data-hits="" data-linenumber="29">
|
262
|
+
|
263
|
+
|
264
|
+
<code class="ruby"> end</code>
|
265
|
+
</li>
|
266
|
+
|
267
|
+
<li class="never" data-hits="" data-linenumber="30">
|
268
|
+
|
269
|
+
|
270
|
+
<code class="ruby"></code>
|
271
|
+
</li>
|
272
|
+
|
273
|
+
<li class="never" data-hits="" data-linenumber="31">
|
274
|
+
|
275
|
+
|
276
|
+
<code class="ruby"></code>
|
277
|
+
</li>
|
278
|
+
|
279
|
+
<li class="never" data-hits="" data-linenumber="32">
|
280
|
+
|
281
|
+
|
282
|
+
<code class="ruby"> #coersion could return a nil which won't validate, it could return a false which will attempt to validate</code>
|
283
|
+
</li>
|
284
|
+
|
285
|
+
<li class="covered" data-hits="14" data-linenumber="33">
|
286
|
+
<span class="hits">14</span>
|
287
|
+
|
288
|
+
<code class="ruby"> if validate!(val, h)</code>
|
289
|
+
</li>
|
290
|
+
|
291
|
+
<li class="never" data-hits="" data-linenumber="34">
|
292
|
+
|
293
|
+
|
294
|
+
<code class="ruby"> #The value is valid add it</code>
|
295
|
+
</li>
|
296
|
+
|
297
|
+
<li class="covered" data-hits="13" data-linenumber="35">
|
298
|
+
<span class="hits">13</span>
|
299
|
+
|
300
|
+
<code class="ruby"> var_name = h[:as] ? h[:as] : key</code>
|
301
|
+
</li>
|
302
|
+
|
303
|
+
<li class="covered" data-hits="13" data-linenumber="36">
|
304
|
+
<span class="hits">13</span>
|
305
|
+
|
306
|
+
<code class="ruby"> self[var_name]=val</code>
|
307
|
+
</li>
|
308
|
+
|
309
|
+
<li class="covered" data-hits="13" data-linenumber="37">
|
310
|
+
<span class="hits">13</span>
|
311
|
+
|
312
|
+
<code class="ruby"> inject_into_target(@target, var_name, val)</code>
|
313
|
+
</li>
|
314
|
+
|
315
|
+
<li class="never" data-hits="" data-linenumber="38">
|
316
|
+
|
317
|
+
|
318
|
+
<code class="ruby"> end</code>
|
319
|
+
</li>
|
320
|
+
|
321
|
+
<li class="covered" data-hits="14" data-linenumber="39">
|
322
|
+
<span class="hits">14</span>
|
323
|
+
|
324
|
+
<code class="ruby"> val</code>
|
325
|
+
</li>
|
326
|
+
|
327
|
+
<li class="never" data-hits="" data-linenumber="40">
|
328
|
+
|
329
|
+
|
330
|
+
<code class="ruby"> rescue => e</code>
|
331
|
+
</li>
|
332
|
+
|
333
|
+
<li class="missed" data-hits="0" data-linenumber="41">
|
334
|
+
|
335
|
+
|
336
|
+
<code class="ruby"> @errors << e.to_s</code>
|
337
|
+
</li>
|
338
|
+
|
339
|
+
<li class="never" data-hits="" data-linenumber="42">
|
340
|
+
|
341
|
+
|
342
|
+
<code class="ruby"> end</code>
|
343
|
+
</li>
|
344
|
+
|
345
|
+
<li class="never" data-hits="" data-linenumber="43">
|
346
|
+
|
347
|
+
|
348
|
+
<code class="ruby"></code>
|
349
|
+
</li>
|
350
|
+
|
351
|
+
<li class="covered" data-hits="1" data-linenumber="44">
|
352
|
+
<span class="hits">1</span>
|
353
|
+
|
354
|
+
<code class="ruby"> def inject_into_target(target, var_name, val)</code>
|
355
|
+
</li>
|
356
|
+
|
357
|
+
<li class="covered" data-hits="13" data-linenumber="45">
|
358
|
+
<span class="hits">13</span>
|
359
|
+
|
360
|
+
<code class="ruby"> if target</code>
|
361
|
+
</li>
|
362
|
+
|
363
|
+
<li class="never" data-hits="" data-linenumber="46">
|
364
|
+
|
365
|
+
|
366
|
+
<code class="ruby"> #for read write methods</code>
|
367
|
+
</li>
|
368
|
+
|
369
|
+
<li class="covered" data-hits="1" data-linenumber="47">
|
370
|
+
<span class="hits">1</span>
|
371
|
+
|
372
|
+
<code class="ruby"> target.singleton_class.class_eval do</code>
|
373
|
+
</li>
|
374
|
+
|
375
|
+
<li class="covered" data-hits="1" data-linenumber="48">
|
376
|
+
<span class="hits">1</span>
|
377
|
+
|
378
|
+
<code class="ruby"> attr_accessor var_name;</code>
|
379
|
+
</li>
|
380
|
+
|
381
|
+
<li class="never" data-hits="" data-linenumber="49">
|
382
|
+
|
383
|
+
|
384
|
+
<code class="ruby"> end</code>
|
385
|
+
</li>
|
386
|
+
|
387
|
+
<li class="covered" data-hits="1" data-linenumber="50">
|
388
|
+
<span class="hits">1</span>
|
389
|
+
|
390
|
+
<code class="ruby"> target.send("#{var_name}=", val)</code>
|
391
|
+
</li>
|
392
|
+
|
393
|
+
<li class="never" data-hits="" data-linenumber="51">
|
394
|
+
|
395
|
+
|
396
|
+
<code class="ruby"> end</code>
|
397
|
+
</li>
|
398
|
+
|
399
|
+
<li class="never" data-hits="" data-linenumber="52">
|
400
|
+
|
401
|
+
|
402
|
+
<code class="ruby"> end</code>
|
403
|
+
</li>
|
404
|
+
|
405
|
+
<li class="never" data-hits="" data-linenumber="53">
|
406
|
+
|
407
|
+
|
408
|
+
<code class="ruby"></code>
|
409
|
+
</li>
|
410
|
+
|
411
|
+
<li class="covered" data-hits="1" data-linenumber="54">
|
412
|
+
<span class="hits">1</span>
|
413
|
+
|
414
|
+
<code class="ruby"> def validate!(param, options ={})</code>
|
415
|
+
</li>
|
416
|
+
|
417
|
+
<li class="covered" data-hits="14" data-linenumber="55">
|
418
|
+
<span class="hits">14</span>
|
419
|
+
|
420
|
+
<code class="ruby"> return false if param.nil?</code>
|
421
|
+
</li>
|
422
|
+
|
423
|
+
<li class="covered" data-hits="14" data-linenumber="56">
|
424
|
+
<span class="hits">14</span>
|
425
|
+
|
426
|
+
<code class="ruby"> is_valid = true</code>
|
427
|
+
</li>
|
428
|
+
|
429
|
+
<li class="never" data-hits="" data-linenumber="57">
|
430
|
+
|
431
|
+
|
432
|
+
<code class="ruby"></code>
|
433
|
+
</li>
|
434
|
+
|
435
|
+
<li class="covered" data-hits="14" data-linenumber="58">
|
436
|
+
<span class="hits">14</span>
|
437
|
+
|
438
|
+
<code class="ruby"> options.each do |key, value|</code>
|
439
|
+
</li>
|
440
|
+
|
441
|
+
<li class="never" data-hits="" data-linenumber="59">
|
442
|
+
|
443
|
+
|
444
|
+
<code class="ruby"></code>
|
445
|
+
</li>
|
446
|
+
|
447
|
+
<li class="covered" data-hits="23" data-linenumber="60">
|
448
|
+
<span class="hits">23</span>
|
449
|
+
|
450
|
+
<code class="ruby"> error = case key</code>
|
451
|
+
</li>
|
452
|
+
|
453
|
+
<li class="never" data-hits="" data-linenumber="61">
|
454
|
+
|
455
|
+
|
456
|
+
<code class="ruby"> when :validate</code>
|
457
|
+
</li>
|
458
|
+
|
459
|
+
<li class="covered" data-hits="2" data-linenumber="62">
|
460
|
+
<span class="hits">2</span>
|
461
|
+
|
462
|
+
<code class="ruby"> "#{param.to_s} failed validation using proc" if value.respond_to?(:call) && !value.call(param)</code>
|
463
|
+
</li>
|
464
|
+
|
465
|
+
<li class="never" data-hits="" data-linenumber="63">
|
466
|
+
|
467
|
+
|
468
|
+
<code class="ruby"> when :blank</code>
|
469
|
+
</li>
|
470
|
+
|
471
|
+
<li class="missed" data-hits="0" data-linenumber="64">
|
472
|
+
|
473
|
+
|
474
|
+
<code class="ruby"> 'Parameter cannot be blank' if !value && blank?(param)</code>
|
475
|
+
</li>
|
476
|
+
|
477
|
+
<li class="never" data-hits="" data-linenumber="65">
|
478
|
+
|
479
|
+
|
480
|
+
<code class="ruby"> when :format</code>
|
481
|
+
</li>
|
482
|
+
|
483
|
+
<li class="covered" data-hits="1" data-linenumber="66">
|
484
|
+
<span class="hits">1</span>
|
485
|
+
|
486
|
+
<code class="ruby"> 'Parameter must be a string if using the format validation' && next unless param.kind_of?(String)</code>
|
487
|
+
</li>
|
488
|
+
|
489
|
+
<li class="covered" data-hits="1" data-linenumber="67">
|
490
|
+
<span class="hits">1</span>
|
491
|
+
|
492
|
+
<code class="ruby"> "Parameter must match format #{value}" unless param =~ value</code>
|
493
|
+
</li>
|
494
|
+
|
495
|
+
<li class="never" data-hits="" data-linenumber="68">
|
496
|
+
|
497
|
+
|
498
|
+
<code class="ruby"> when :is</code>
|
499
|
+
</li>
|
500
|
+
|
501
|
+
<li class="covered" data-hits="1" data-linenumber="69">
|
502
|
+
<span class="hits">1</span>
|
503
|
+
|
504
|
+
<code class="ruby"> "Parameter must be #{value}" unless param === value</code>
|
505
|
+
</li>
|
506
|
+
|
507
|
+
<li class="never" data-hits="" data-linenumber="70">
|
508
|
+
|
509
|
+
|
510
|
+
<code class="ruby"> when :in, :within, :range</code>
|
511
|
+
</li>
|
512
|
+
|
513
|
+
<li class="covered" data-hits="1" data-linenumber="71">
|
514
|
+
<span class="hits">1</span>
|
515
|
+
|
516
|
+
<code class="ruby"> "Parameter must be within #{value}" unless value.respond_to?(:include) ? value.include?(param) : Array(value).include?(param)</code>
|
517
|
+
</li>
|
518
|
+
|
519
|
+
<li class="never" data-hits="" data-linenumber="72">
|
520
|
+
|
521
|
+
|
522
|
+
<code class="ruby"> when :min</code>
|
523
|
+
</li>
|
524
|
+
|
525
|
+
<li class="covered" data-hits="1" data-linenumber="73">
|
526
|
+
<span class="hits">1</span>
|
527
|
+
|
528
|
+
<code class="ruby"> "Parameter cannot be less than #{value}" unless value <= param</code>
|
529
|
+
</li>
|
530
|
+
|
531
|
+
<li class="never" data-hits="" data-linenumber="74">
|
532
|
+
|
533
|
+
|
534
|
+
<code class="ruby"> when :max</code>
|
535
|
+
</li>
|
536
|
+
|
537
|
+
<li class="covered" data-hits="1" data-linenumber="75">
|
538
|
+
<span class="hits">1</span>
|
539
|
+
|
540
|
+
<code class="ruby"> "Parameter cannot be greater than #{value}" unless value >= param</code>
|
541
|
+
</li>
|
542
|
+
|
543
|
+
<li class="never" data-hits="" data-linenumber="76">
|
544
|
+
|
545
|
+
|
546
|
+
<code class="ruby"> when :min_length</code>
|
547
|
+
</li>
|
548
|
+
|
549
|
+
<li class="covered" data-hits="1" data-linenumber="77">
|
550
|
+
<span class="hits">1</span>
|
551
|
+
|
552
|
+
<code class="ruby"> "Parameter cannot have length less than #{value}" unless value <= param.length</code>
|
553
|
+
</li>
|
554
|
+
|
555
|
+
<li class="never" data-hits="" data-linenumber="78">
|
556
|
+
|
557
|
+
|
558
|
+
<code class="ruby"> when :max_length</code>
|
559
|
+
</li>
|
560
|
+
|
561
|
+
<li class="covered" data-hits="1" data-linenumber="79">
|
562
|
+
<span class="hits">1</span>
|
563
|
+
|
564
|
+
<code class="ruby"> "Parameter cannot have length greater than #{value}" unless value >= param.length</code>
|
565
|
+
</li>
|
566
|
+
|
567
|
+
<li class="never" data-hits="" data-linenumber="80">
|
568
|
+
|
569
|
+
|
570
|
+
<code class="ruby"> else</code>
|
571
|
+
</li>
|
572
|
+
|
573
|
+
<li class="covered" data-hits="14" data-linenumber="81">
|
574
|
+
<span class="hits">14</span>
|
575
|
+
|
576
|
+
<code class="ruby"> nil</code>
|
577
|
+
</li>
|
578
|
+
|
579
|
+
<li class="never" data-hits="" data-linenumber="82">
|
580
|
+
|
581
|
+
|
582
|
+
<code class="ruby"> end</code>
|
583
|
+
</li>
|
584
|
+
|
585
|
+
<li class="covered" data-hits="23" data-linenumber="83">
|
586
|
+
<span class="hits">23</span>
|
587
|
+
|
588
|
+
<code class="ruby"> if error</code>
|
589
|
+
</li>
|
590
|
+
|
591
|
+
<li class="covered" data-hits="1" data-linenumber="84">
|
592
|
+
<span class="hits">1</span>
|
593
|
+
|
594
|
+
<code class="ruby"> @errors << error</code>
|
595
|
+
</li>
|
596
|
+
|
597
|
+
<li class="covered" data-hits="1" data-linenumber="85">
|
598
|
+
<span class="hits">1</span>
|
599
|
+
|
600
|
+
<code class="ruby"> is_valid = false</code>
|
601
|
+
</li>
|
602
|
+
|
603
|
+
<li class="never" data-hits="" data-linenumber="86">
|
604
|
+
|
605
|
+
|
606
|
+
<code class="ruby"> end</code>
|
607
|
+
</li>
|
608
|
+
|
609
|
+
<li class="never" data-hits="" data-linenumber="87">
|
610
|
+
|
611
|
+
|
612
|
+
<code class="ruby"> end</code>
|
613
|
+
</li>
|
614
|
+
|
615
|
+
<li class="never" data-hits="" data-linenumber="88">
|
616
|
+
|
617
|
+
|
618
|
+
<code class="ruby"></code>
|
619
|
+
</li>
|
620
|
+
|
621
|
+
<li class="never" data-hits="" data-linenumber="89">
|
622
|
+
|
623
|
+
|
624
|
+
<code class="ruby"> #return true or false depending on if it validated</code>
|
625
|
+
</li>
|
626
|
+
|
627
|
+
<li class="covered" data-hits="14" data-linenumber="90">
|
628
|
+
<span class="hits">14</span>
|
629
|
+
|
630
|
+
<code class="ruby"> is_valid</code>
|
631
|
+
</li>
|
632
|
+
|
633
|
+
<li class="never" data-hits="" data-linenumber="91">
|
634
|
+
|
635
|
+
|
636
|
+
<code class="ruby"> end</code>
|
637
|
+
</li>
|
638
|
+
|
639
|
+
<li class="never" data-hits="" data-linenumber="92">
|
640
|
+
|
641
|
+
|
642
|
+
<code class="ruby"></code>
|
643
|
+
</li>
|
644
|
+
|
645
|
+
<li class="never" data-hits="" data-linenumber="93">
|
646
|
+
|
647
|
+
|
648
|
+
<code class="ruby"></code>
|
649
|
+
</li>
|
650
|
+
|
651
|
+
<li class="covered" data-hits="1" data-linenumber="94">
|
652
|
+
<span class="hits">1</span>
|
653
|
+
|
654
|
+
<code class="ruby"> def coerce(val, type, h)</code>
|
655
|
+
</li>
|
656
|
+
|
657
|
+
<li class="never" data-hits="" data-linenumber="95">
|
658
|
+
|
659
|
+
|
660
|
+
<code class="ruby"></code>
|
661
|
+
</li>
|
662
|
+
|
663
|
+
<li class="never" data-hits="" data-linenumber="96">
|
664
|
+
|
665
|
+
|
666
|
+
<code class="ruby"> # exceptions bubble up</code>
|
667
|
+
</li>
|
668
|
+
|
669
|
+
<li class="never" data-hits="" data-linenumber="97">
|
670
|
+
|
671
|
+
|
672
|
+
<code class="ruby"> #order is important</code>
|
673
|
+
</li>
|
674
|
+
|
675
|
+
<li class="covered" data-hits="9" data-linenumber="98">
|
676
|
+
<span class="hits">9</span>
|
677
|
+
|
678
|
+
<code class="ruby"> return val if type.nil? || val.nil?</code>
|
679
|
+
</li>
|
680
|
+
|
681
|
+
<li class="never" data-hits="" data-linenumber="99">
|
682
|
+
|
683
|
+
|
684
|
+
<code class="ruby"></code>
|
685
|
+
</li>
|
686
|
+
|
687
|
+
<li class="never" data-hits="" data-linenumber="100">
|
688
|
+
|
689
|
+
|
690
|
+
<code class="ruby"> #two special types of transforms</code>
|
691
|
+
</li>
|
692
|
+
|
693
|
+
<li class="never" data-hits="" data-linenumber="101">
|
694
|
+
|
695
|
+
|
696
|
+
<code class="ruby"> #There is no Boolean type so we handle them special</code>
|
697
|
+
</li>
|
698
|
+
|
699
|
+
<li class="covered" data-hits="9" data-linenumber="102">
|
700
|
+
<span class="hits">9</span>
|
701
|
+
|
702
|
+
<code class="ruby"> if type == :boolean || type =='boolean'</code>
|
703
|
+
</li>
|
704
|
+
|
705
|
+
<li class="covered" data-hits="2" data-linenumber="103">
|
706
|
+
<span class="hits">2</span>
|
707
|
+
|
708
|
+
<code class="ruby"> return val if (val == true || val == false)</code>
|
709
|
+
</li>
|
710
|
+
|
711
|
+
<li class="covered" data-hits="2" data-linenumber="104">
|
712
|
+
<span class="hits">2</span>
|
713
|
+
|
714
|
+
<code class="ruby"> return false if /(false|f|no|n|0)$/i === val.to_s</code>
|
715
|
+
</li>
|
716
|
+
|
717
|
+
<li class="covered" data-hits="1" data-linenumber="105">
|
718
|
+
<span class="hits">1</span>
|
719
|
+
|
720
|
+
<code class="ruby"> return true if /(true|t|yes|y|1)$/i === val.to_s</code>
|
721
|
+
</li>
|
722
|
+
|
723
|
+
<li class="never" data-hits="" data-linenumber="106">
|
724
|
+
|
725
|
+
|
726
|
+
<code class="ruby"></code>
|
727
|
+
</li>
|
728
|
+
|
729
|
+
<li class="never" data-hits="" data-linenumber="107">
|
730
|
+
|
731
|
+
|
732
|
+
<code class="ruby"> # if we can't parse we return a nil</code>
|
733
|
+
</li>
|
734
|
+
|
735
|
+
<li class="never" data-hits="" data-linenumber="108">
|
736
|
+
|
737
|
+
|
738
|
+
<code class="ruby"> # maybe !!val is a better return?</code>
|
739
|
+
</li>
|
740
|
+
|
741
|
+
<li class="missed" data-hits="0" data-linenumber="109">
|
742
|
+
|
743
|
+
|
744
|
+
<code class="ruby"> return nil</code>
|
745
|
+
</li>
|
746
|
+
|
747
|
+
<li class="never" data-hits="" data-linenumber="110">
|
748
|
+
|
749
|
+
|
750
|
+
<code class="ruby"> end</code>
|
751
|
+
</li>
|
752
|
+
|
753
|
+
<li class="never" data-hits="" data-linenumber="111">
|
754
|
+
|
755
|
+
|
756
|
+
<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>
|
757
|
+
</li>
|
758
|
+
|
759
|
+
<li class="never" data-hits="" data-linenumber="112">
|
760
|
+
|
761
|
+
|
762
|
+
<code class="ruby"></code>
|
763
|
+
</li>
|
764
|
+
|
765
|
+
<li class="covered" data-hits="7" data-linenumber="113">
|
766
|
+
<span class="hits">7</span>
|
767
|
+
|
768
|
+
<code class="ruby"> return type.to_proc.call(val) if type.is_a?(Symbol) || type.is_a?(String)</code>
|
769
|
+
</li>
|
770
|
+
|
771
|
+
<li class="never" data-hits="" data-linenumber="114">
|
772
|
+
|
773
|
+
|
774
|
+
<code class="ruby"> #could be a proc</code>
|
775
|
+
</li>
|
776
|
+
|
777
|
+
<li class="never" data-hits="" data-linenumber="115">
|
778
|
+
|
779
|
+
|
780
|
+
<code class="ruby"></code>
|
781
|
+
</li>
|
782
|
+
|
783
|
+
<li class="covered" data-hits="6" data-linenumber="116">
|
784
|
+
<span class="hits">6</span>
|
785
|
+
|
786
|
+
<code class="ruby"> return type.call(val) if type.respond_to?(:call)</code>
|
787
|
+
</li>
|
788
|
+
|
789
|
+
<li class="never" data-hits="" data-linenumber="117">
|
790
|
+
|
791
|
+
|
792
|
+
<code class="ruby"> #nothing but simple types left</code>
|
793
|
+
</li>
|
794
|
+
|
795
|
+
<li class="covered" data-hits="5" data-linenumber="118">
|
796
|
+
<span class="hits">5</span>
|
797
|
+
|
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
|
+
|
804
|
+
<code class="ruby"> return Integer(val) if type == Integer</code>
|
805
|
+
</li>
|
806
|
+
|
807
|
+
<li class="covered" data-hits="3" data-linenumber="120">
|
808
|
+
<span class="hits">3</span>
|
809
|
+
|
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
|
+
|
816
|
+
<code class="ruby"> return String(val) if type == String</code>
|
817
|
+
</li>
|
818
|
+
|
819
|
+
<li class="covered" data-hits="2" data-linenumber="122">
|
820
|
+
<span class="hits">2</span>
|
821
|
+
|
822
|
+
<code class="ruby"> return Date.parse(val) if type == Date</code>
|
823
|
+
</li>
|
824
|
+
|
825
|
+
<li class="covered" data-hits="2" data-linenumber="123">
|
826
|
+
<span class="hits">2</span>
|
827
|
+
|
828
|
+
<code class="ruby"> return Time.parse(val) if type == Time</code>
|
829
|
+
</li>
|
830
|
+
|
831
|
+
<li class="covered" data-hits="2" data-linenumber="124">
|
832
|
+
<span class="hits">2</span>
|
833
|
+
|
834
|
+
<code class="ruby"> return DateTime.parse(val) if type == DateTime</code>
|
835
|
+
</li>
|
836
|
+
|
837
|
+
<li class="covered" data-hits="2" data-linenumber="125">
|
838
|
+
<span class="hits">2</span>
|
839
|
+
|
840
|
+
<code class="ruby"> return Array(val.split(h[:delimiter] || ',')) if type == Array</code>
|
841
|
+
</li>
|
842
|
+
|
843
|
+
<li class="covered" data-hits="10" data-linenumber="126">
|
844
|
+
<span class="hits">10</span>
|
845
|
+
|
846
|
+
<code class="ruby"> return Hash[val.gsub(/[{}]/,'').gsub('}','').split(h[:delimiter] || ',').map { |c| c.split(h[:separator] ||':').map{|i| i.strip} }] if type == Hash</code>
|
847
|
+
</li>
|
848
|
+
|
849
|
+
<li class="never" data-hits="" data-linenumber="127">
|
850
|
+
|
851
|
+
|
852
|
+
<code class="ruby"></code>
|
853
|
+
</li>
|
854
|
+
|
855
|
+
<li class="never" data-hits="" data-linenumber="128">
|
856
|
+
|
857
|
+
|
858
|
+
<code class="ruby"> nil</code>
|
859
|
+
</li>
|
860
|
+
|
861
|
+
<li class="never" data-hits="" data-linenumber="129">
|
862
|
+
|
863
|
+
|
864
|
+
<code class="ruby"> end</code>
|
865
|
+
</li>
|
866
|
+
|
867
|
+
<li class="never" data-hits="" data-linenumber="130">
|
868
|
+
|
869
|
+
|
870
|
+
<code class="ruby"></code>
|
871
|
+
</li>
|
872
|
+
|
873
|
+
<li class="covered" data-hits="1" data-linenumber="131">
|
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">
|
880
|
+
<span class="hits">1</span>
|
881
|
+
|
882
|
+
<code class="ruby"> @valid</code>
|
883
|
+
</li>
|
884
|
+
|
885
|
+
<li class="never" data-hits="" data-linenumber="133">
|
886
|
+
|
887
|
+
|
888
|
+
<code class="ruby"> end</code>
|
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>
|
895
|
+
</li>
|
896
|
+
|
897
|
+
<li class="missed" data-hits="0" data-linenumber="135">
|
898
|
+
|
899
|
+
|
900
|
+
<code class="ruby"> !blank?(object)</code>
|
901
|
+
</li>
|
902
|
+
|
903
|
+
<li class="never" data-hits="" data-linenumber="136">
|
904
|
+
|
905
|
+
|
906
|
+
<code class="ruby"> end</code>
|
907
|
+
</li>
|
908
|
+
|
909
|
+
<li class="never" data-hits="" data-linenumber="137">
|
910
|
+
|
911
|
+
|
912
|
+
<code class="ruby"></code>
|
913
|
+
</li>
|
914
|
+
|
915
|
+
<li class="covered" data-hits="1" data-linenumber="138">
|
916
|
+
<span class="hits">1</span>
|
917
|
+
|
918
|
+
<code class="ruby"> def blank?(object)</code>
|
919
|
+
</li>
|
920
|
+
|
921
|
+
<li class="missed" data-hits="0" data-linenumber="139">
|
922
|
+
|
923
|
+
|
924
|
+
<code class="ruby"> return true if object.nil?</code>
|
925
|
+
</li>
|
926
|
+
|
927
|
+
<li class="missed" data-hits="0" data-linenumber="140">
|
928
|
+
|
929
|
+
|
930
|
+
<code class="ruby"> return true if object.respond_to?(:empty) && object.empty</code>
|
931
|
+
</li>
|
932
|
+
|
933
|
+
<li class="missed" data-hits="0" data-linenumber="141">
|
934
|
+
|
935
|
+
|
936
|
+
<code class="ruby"> return false</code>
|
937
|
+
</li>
|
938
|
+
|
939
|
+
<li class="never" data-hits="" data-linenumber="142">
|
940
|
+
|
941
|
+
|
942
|
+
<code class="ruby"> end</code>
|
943
|
+
</li>
|
944
|
+
|
945
|
+
<li class="never" data-hits="" data-linenumber="143">
|
946
|
+
|
947
|
+
|
948
|
+
<code class="ruby"></code>
|
949
|
+
</li>
|
950
|
+
|
951
|
+
<li class="never" data-hits="" data-linenumber="144">
|
952
|
+
|
953
|
+
|
954
|
+
<code class="ruby">end</code>
|
955
|
+
</li>
|
956
|
+
|
957
|
+
</ol>
|
958
|
+
</pre>
|
959
|
+
</div>
|
960
|
+
|
961
|
+
</div>
|
962
|
+
</div>
|
963
|
+
</body>
|
964
|
+
</html>
|