hash_params 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +37 -0
  4. data/LICENSE +19 -0
  5. data/README.md +174 -0
  6. data/Rakefile +11 -0
  7. data/coverage/assets/0.8.0/application.css +799 -0
  8. data/coverage/assets/0.8.0/application.js +1559 -0
  9. data/coverage/assets/0.8.0/colorbox/border.png +0 -0
  10. data/coverage/assets/0.8.0/colorbox/controls.png +0 -0
  11. data/coverage/assets/0.8.0/colorbox/loading.gif +0 -0
  12. data/coverage/assets/0.8.0/colorbox/loading_background.png +0 -0
  13. data/coverage/assets/0.8.0/favicon_green.png +0 -0
  14. data/coverage/assets/0.8.0/favicon_red.png +0 -0
  15. data/coverage/assets/0.8.0/favicon_yellow.png +0 -0
  16. data/coverage/assets/0.8.0/loading.gif +0 -0
  17. data/coverage/assets/0.8.0/magnify.png +0 -0
  18. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  19. data/coverage/assets/0.8.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  20. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  21. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  22. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  23. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  24. data/coverage/assets/0.8.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  25. data/coverage/assets/0.8.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  26. data/coverage/assets/0.8.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  27. data/coverage/assets/0.8.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  28. data/coverage/assets/0.8.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  29. data/coverage/assets/0.8.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  30. data/coverage/assets/0.8.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  31. data/coverage/index.html +964 -0
  32. data/hash_params.gemspec +27 -0
  33. data/lib/hash_params.rb +157 -0
  34. data/spec/hash_params_spec.rb +86 -0
  35. data/spec/spec_helper.rb +24 -0
  36. metadata +152 -0
@@ -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 &lt; 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 = &#39;0.0.1&#39;</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, &amp;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 &#39;self&#39;</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(&amp;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? &amp;&amp; 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&#39;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 &lt;&lt; &quot;Parameter #{key} is required and missing&quot; if h[:required] &amp;&amp; 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&#39;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 =&gt; e</code>
331
+ </li>
332
+
333
+ <li class="missed" data-hits="0" data-linenumber="41">
334
+
335
+
336
+ <code class="ruby"> @errors &lt;&lt; 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(&quot;#{var_name}=&quot;, 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"> &quot;#{param.to_s} failed validation using proc&quot; if value.respond_to?(:call) &amp;&amp; !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"> &#39;Parameter cannot be blank&#39; if !value &amp;&amp; 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"> &#39;Parameter must be a string if using the format validation&#39; &amp;&amp; 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"> &quot;Parameter must match format #{value}&quot; 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"> &quot;Parameter must be #{value}&quot; 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"> &quot;Parameter must be within #{value}&quot; 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"> &quot;Parameter cannot be less than #{value}&quot; unless value &lt;= 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"> &quot;Parameter cannot be greater than #{value}&quot; unless value &gt;= 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"> &quot;Parameter cannot have length less than #{value}&quot; unless value &lt;= 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"> &quot;Parameter cannot have length greater than #{value}&quot; unless value &gt;= 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 &lt;&lt; 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 ==&#39;boolean&#39;</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&#39;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 &quot;boolean&quot;, 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] || &#39;,&#39;)) 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(/[{}]/,&#39;&#39;).gsub(&#39;}&#39;,&#39;&#39;).split(h[:delimiter] || &#39;,&#39;).map { |c| c.split(h[:separator] ||&#39;:&#39;).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) &amp;&amp; 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>