classx 0.0.6 → 0.0.7
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.
- data/ChangeLog +526 -338
- data/Rakefile +1 -1
- data/lib/classx.rb +1 -1
- data/lib/classx/attributes.rb +4 -4
- data/spec/classx/default_option_spec.rb +32 -0
- metadata +3 -13
- data/doc/output/coverage/index.html +0 -414
- data/doc/output/coverage/lib-classx-attribute_rb.html +0 -925
- data/doc/output/coverage/lib-classx-attributes_rb.html +0 -771
- data/doc/output/coverage/lib-classx-bracketable_rb.html +0 -671
- data/doc/output/coverage/lib-classx-class_attributes_rb.html +0 -775
- data/doc/output/coverage/lib-classx-commandable_rb.html +0 -727
- data/doc/output/coverage/lib-classx-declare_rb.html +0 -659
- data/doc/output/coverage/lib-classx-validate_rb.html +0 -663
- data/doc/output/coverage/lib-classx_rb.html +0 -820
@@ -1,925 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>lib/classx/attribute.rb - C0 code coverage information</title>
|
3
|
-
<style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
|
4
|
-
<style type='text/css'>span.cross-ref-title {
|
5
|
-
font-size: 140%;
|
6
|
-
}
|
7
|
-
span.cross-ref a {
|
8
|
-
text-decoration: none;
|
9
|
-
}
|
10
|
-
span.cross-ref {
|
11
|
-
background-color:#f3f7fa;
|
12
|
-
border: 1px dashed #333;
|
13
|
-
margin: 1em;
|
14
|
-
padding: 0.5em;
|
15
|
-
overflow: hidden;
|
16
|
-
}
|
17
|
-
a.crossref-toggle {
|
18
|
-
text-decoration: none;
|
19
|
-
}
|
20
|
-
span.marked0 {
|
21
|
-
background-color: rgb(185, 210, 200);
|
22
|
-
display: block;
|
23
|
-
}
|
24
|
-
span.marked1 {
|
25
|
-
background-color: rgb(190, 215, 205);
|
26
|
-
display: block;
|
27
|
-
}
|
28
|
-
span.inferred0 {
|
29
|
-
background-color: rgb(175, 200, 200);
|
30
|
-
display: block;
|
31
|
-
}
|
32
|
-
span.inferred1 {
|
33
|
-
background-color: rgb(180, 205, 205);
|
34
|
-
display: block;
|
35
|
-
}
|
36
|
-
span.uncovered0 {
|
37
|
-
background-color: rgb(225, 110, 110);
|
38
|
-
display: block;
|
39
|
-
}
|
40
|
-
span.uncovered1 {
|
41
|
-
background-color: rgb(235, 120, 120);
|
42
|
-
display: block;
|
43
|
-
}
|
44
|
-
span.overview {
|
45
|
-
border-bottom: 8px solid black;
|
46
|
-
}
|
47
|
-
div.overview {
|
48
|
-
border-bottom: 8px solid black;
|
49
|
-
}
|
50
|
-
body {
|
51
|
-
font-family: verdana, arial, helvetica;
|
52
|
-
}
|
53
|
-
div.footer {
|
54
|
-
font-size: 68%;
|
55
|
-
margin-top: 1.5em;
|
56
|
-
}
|
57
|
-
h1, h2, h3, h4, h5, h6 {
|
58
|
-
margin-bottom: 0.5em;
|
59
|
-
}
|
60
|
-
h5 {
|
61
|
-
margin-top: 0.5em;
|
62
|
-
}
|
63
|
-
.hidden {
|
64
|
-
display: none;
|
65
|
-
}
|
66
|
-
div.separator {
|
67
|
-
height: 10px;
|
68
|
-
}
|
69
|
-
/* Commented out for better readability, esp. on IE */
|
70
|
-
/*
|
71
|
-
table tr td, table tr th {
|
72
|
-
font-size: 68%;
|
73
|
-
}
|
74
|
-
td.value table tr td {
|
75
|
-
font-size: 11px;
|
76
|
-
}
|
77
|
-
*/
|
78
|
-
table.percent_graph {
|
79
|
-
height: 12px;
|
80
|
-
border: #808080 1px solid;
|
81
|
-
empty-cells: show;
|
82
|
-
}
|
83
|
-
table.percent_graph td.covered {
|
84
|
-
height: 10px;
|
85
|
-
background: #00f000;
|
86
|
-
}
|
87
|
-
table.percent_graph td.uncovered {
|
88
|
-
height: 10px;
|
89
|
-
background: #e00000;
|
90
|
-
}
|
91
|
-
table.percent_graph td.NA {
|
92
|
-
height: 10px;
|
93
|
-
background: #eaeaea;
|
94
|
-
}
|
95
|
-
table.report {
|
96
|
-
border-collapse: collapse;
|
97
|
-
width: 100%;
|
98
|
-
}
|
99
|
-
table.report td.heading {
|
100
|
-
background: #dcecff;
|
101
|
-
border: #d0d0d0 1px solid;
|
102
|
-
font-weight: bold;
|
103
|
-
text-align: center;
|
104
|
-
}
|
105
|
-
table.report td.heading:hover {
|
106
|
-
background: #c0ffc0;
|
107
|
-
}
|
108
|
-
table.report td.text {
|
109
|
-
border: #d0d0d0 1px solid;
|
110
|
-
}
|
111
|
-
table.report td.value,
|
112
|
-
table.report td.lines_total,
|
113
|
-
table.report td.lines_code {
|
114
|
-
text-align: right;
|
115
|
-
border: #d0d0d0 1px solid;
|
116
|
-
}
|
117
|
-
table.report tr.light {
|
118
|
-
background-color: rgb(240, 240, 245);
|
119
|
-
}
|
120
|
-
table.report tr.dark {
|
121
|
-
background-color: rgb(230, 230, 235);
|
122
|
-
}
|
123
|
-
</style>
|
124
|
-
<script type='text/javascript'>
|
125
|
-
// <![CDATA[
|
126
|
-
function toggleCode( id ) {
|
127
|
-
if ( document.getElementById )
|
128
|
-
elem = document.getElementById( id );
|
129
|
-
else if ( document.all )
|
130
|
-
elem = eval( "document.all." + id );
|
131
|
-
else
|
132
|
-
return false;
|
133
|
-
|
134
|
-
elemStyle = elem.style;
|
135
|
-
|
136
|
-
if ( elemStyle.display != "block" ) {
|
137
|
-
elemStyle.display = "block"
|
138
|
-
} else {
|
139
|
-
elemStyle.display = "none"
|
140
|
-
}
|
141
|
-
|
142
|
-
return true;
|
143
|
-
}
|
144
|
-
|
145
|
-
// Make cross-references hidden by default
|
146
|
-
document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
|
147
|
-
// ]]>
|
148
|
-
</script>
|
149
|
-
<style type='text/css'>span.run0 {
|
150
|
-
background-color: rgb(178, 204, 255);
|
151
|
-
display: block;
|
152
|
-
}
|
153
|
-
span.run1 {
|
154
|
-
background-color: rgb(178, 206, 255);
|
155
|
-
display: block;
|
156
|
-
}
|
157
|
-
span.run2 {
|
158
|
-
background-color: rgb(178, 209, 255);
|
159
|
-
display: block;
|
160
|
-
}
|
161
|
-
span.run3 {
|
162
|
-
background-color: rgb(178, 211, 255);
|
163
|
-
display: block;
|
164
|
-
}
|
165
|
-
span.run4 {
|
166
|
-
background-color: rgb(178, 214, 255);
|
167
|
-
display: block;
|
168
|
-
}
|
169
|
-
span.run5 {
|
170
|
-
background-color: rgb(178, 218, 255);
|
171
|
-
display: block;
|
172
|
-
}
|
173
|
-
span.run6 {
|
174
|
-
background-color: rgb(178, 220, 255);
|
175
|
-
display: block;
|
176
|
-
}
|
177
|
-
span.run7 {
|
178
|
-
background-color: rgb(178, 223, 255);
|
179
|
-
display: block;
|
180
|
-
}
|
181
|
-
span.run8 {
|
182
|
-
background-color: rgb(178, 225, 255);
|
183
|
-
display: block;
|
184
|
-
}
|
185
|
-
span.run9 {
|
186
|
-
background-color: rgb(178, 228, 255);
|
187
|
-
display: block;
|
188
|
-
}
|
189
|
-
span.run10 {
|
190
|
-
background-color: rgb(178, 232, 255);
|
191
|
-
display: block;
|
192
|
-
}
|
193
|
-
span.run11 {
|
194
|
-
background-color: rgb(178, 234, 255);
|
195
|
-
display: block;
|
196
|
-
}
|
197
|
-
span.run12 {
|
198
|
-
background-color: rgb(178, 237, 255);
|
199
|
-
display: block;
|
200
|
-
}
|
201
|
-
span.run13 {
|
202
|
-
background-color: rgb(178, 239, 255);
|
203
|
-
display: block;
|
204
|
-
}
|
205
|
-
span.run14 {
|
206
|
-
background-color: rgb(178, 242, 255);
|
207
|
-
display: block;
|
208
|
-
}
|
209
|
-
span.run15 {
|
210
|
-
background-color: rgb(178, 246, 255);
|
211
|
-
display: block;
|
212
|
-
}
|
213
|
-
span.run16 {
|
214
|
-
background-color: rgb(178, 248, 255);
|
215
|
-
display: block;
|
216
|
-
}
|
217
|
-
span.run17 {
|
218
|
-
background-color: rgb(178, 251, 255);
|
219
|
-
display: block;
|
220
|
-
}
|
221
|
-
span.run18 {
|
222
|
-
background-color: rgb(178, 253, 255);
|
223
|
-
display: block;
|
224
|
-
}
|
225
|
-
span.run19 {
|
226
|
-
background-color: rgb(178, 255, 253);
|
227
|
-
display: block;
|
228
|
-
}
|
229
|
-
span.run20 {
|
230
|
-
background-color: rgb(178, 255, 249);
|
231
|
-
display: block;
|
232
|
-
}
|
233
|
-
span.run21 {
|
234
|
-
background-color: rgb(178, 255, 247);
|
235
|
-
display: block;
|
236
|
-
}
|
237
|
-
span.run22 {
|
238
|
-
background-color: rgb(178, 255, 244);
|
239
|
-
display: block;
|
240
|
-
}
|
241
|
-
span.run23 {
|
242
|
-
background-color: rgb(178, 255, 242);
|
243
|
-
display: block;
|
244
|
-
}
|
245
|
-
span.run24 {
|
246
|
-
background-color: rgb(178, 255, 239);
|
247
|
-
display: block;
|
248
|
-
}
|
249
|
-
span.run25 {
|
250
|
-
background-color: rgb(178, 255, 235);
|
251
|
-
display: block;
|
252
|
-
}
|
253
|
-
span.run26 {
|
254
|
-
background-color: rgb(178, 255, 233);
|
255
|
-
display: block;
|
256
|
-
}
|
257
|
-
span.run27 {
|
258
|
-
background-color: rgb(178, 255, 230);
|
259
|
-
display: block;
|
260
|
-
}
|
261
|
-
span.run28 {
|
262
|
-
background-color: rgb(178, 255, 228);
|
263
|
-
display: block;
|
264
|
-
}
|
265
|
-
span.run29 {
|
266
|
-
background-color: rgb(178, 255, 225);
|
267
|
-
display: block;
|
268
|
-
}
|
269
|
-
span.run30 {
|
270
|
-
background-color: rgb(178, 255, 221);
|
271
|
-
display: block;
|
272
|
-
}
|
273
|
-
span.run31 {
|
274
|
-
background-color: rgb(178, 255, 219);
|
275
|
-
display: block;
|
276
|
-
}
|
277
|
-
span.run32 {
|
278
|
-
background-color: rgb(178, 255, 216);
|
279
|
-
display: block;
|
280
|
-
}
|
281
|
-
span.run33 {
|
282
|
-
background-color: rgb(178, 255, 214);
|
283
|
-
display: block;
|
284
|
-
}
|
285
|
-
span.run34 {
|
286
|
-
background-color: rgb(178, 255, 211);
|
287
|
-
display: block;
|
288
|
-
}
|
289
|
-
span.run35 {
|
290
|
-
background-color: rgb(178, 255, 207);
|
291
|
-
display: block;
|
292
|
-
}
|
293
|
-
span.run36 {
|
294
|
-
background-color: rgb(178, 255, 205);
|
295
|
-
display: block;
|
296
|
-
}
|
297
|
-
span.run37 {
|
298
|
-
background-color: rgb(178, 255, 202);
|
299
|
-
display: block;
|
300
|
-
}
|
301
|
-
span.run38 {
|
302
|
-
background-color: rgb(178, 255, 200);
|
303
|
-
display: block;
|
304
|
-
}
|
305
|
-
span.run39 {
|
306
|
-
background-color: rgb(178, 255, 197);
|
307
|
-
display: block;
|
308
|
-
}
|
309
|
-
span.run40 {
|
310
|
-
background-color: rgb(178, 255, 193);
|
311
|
-
display: block;
|
312
|
-
}
|
313
|
-
span.run41 {
|
314
|
-
background-color: rgb(178, 255, 191);
|
315
|
-
display: block;
|
316
|
-
}
|
317
|
-
span.run42 {
|
318
|
-
background-color: rgb(178, 255, 188);
|
319
|
-
display: block;
|
320
|
-
}
|
321
|
-
span.run43 {
|
322
|
-
background-color: rgb(178, 255, 186);
|
323
|
-
display: block;
|
324
|
-
}
|
325
|
-
span.run44 {
|
326
|
-
background-color: rgb(178, 255, 183);
|
327
|
-
display: block;
|
328
|
-
}
|
329
|
-
span.run45 {
|
330
|
-
background-color: rgb(178, 255, 179);
|
331
|
-
display: block;
|
332
|
-
}
|
333
|
-
span.run46 {
|
334
|
-
background-color: rgb(179, 255, 178);
|
335
|
-
display: block;
|
336
|
-
}
|
337
|
-
span.run47 {
|
338
|
-
background-color: rgb(182, 255, 178);
|
339
|
-
display: block;
|
340
|
-
}
|
341
|
-
span.run48 {
|
342
|
-
background-color: rgb(184, 255, 178);
|
343
|
-
display: block;
|
344
|
-
}
|
345
|
-
span.run49 {
|
346
|
-
background-color: rgb(187, 255, 178);
|
347
|
-
display: block;
|
348
|
-
}
|
349
|
-
span.run50 {
|
350
|
-
background-color: rgb(191, 255, 178);
|
351
|
-
display: block;
|
352
|
-
}
|
353
|
-
span.run51 {
|
354
|
-
background-color: rgb(193, 255, 178);
|
355
|
-
display: block;
|
356
|
-
}
|
357
|
-
span.run52 {
|
358
|
-
background-color: rgb(196, 255, 178);
|
359
|
-
display: block;
|
360
|
-
}
|
361
|
-
span.run53 {
|
362
|
-
background-color: rgb(198, 255, 178);
|
363
|
-
display: block;
|
364
|
-
}
|
365
|
-
span.run54 {
|
366
|
-
background-color: rgb(201, 255, 178);
|
367
|
-
display: block;
|
368
|
-
}
|
369
|
-
span.run55 {
|
370
|
-
background-color: rgb(205, 255, 178);
|
371
|
-
display: block;
|
372
|
-
}
|
373
|
-
span.run56 {
|
374
|
-
background-color: rgb(207, 255, 178);
|
375
|
-
display: block;
|
376
|
-
}
|
377
|
-
span.run57 {
|
378
|
-
background-color: rgb(210, 255, 178);
|
379
|
-
display: block;
|
380
|
-
}
|
381
|
-
span.run58 {
|
382
|
-
background-color: rgb(212, 255, 178);
|
383
|
-
display: block;
|
384
|
-
}
|
385
|
-
span.run59 {
|
386
|
-
background-color: rgb(215, 255, 178);
|
387
|
-
display: block;
|
388
|
-
}
|
389
|
-
span.run60 {
|
390
|
-
background-color: rgb(219, 255, 178);
|
391
|
-
display: block;
|
392
|
-
}
|
393
|
-
span.run61 {
|
394
|
-
background-color: rgb(221, 255, 178);
|
395
|
-
display: block;
|
396
|
-
}
|
397
|
-
span.run62 {
|
398
|
-
background-color: rgb(224, 255, 178);
|
399
|
-
display: block;
|
400
|
-
}
|
401
|
-
span.run63 {
|
402
|
-
background-color: rgb(226, 255, 178);
|
403
|
-
display: block;
|
404
|
-
}
|
405
|
-
span.run64 {
|
406
|
-
background-color: rgb(229, 255, 178);
|
407
|
-
display: block;
|
408
|
-
}
|
409
|
-
span.run65 {
|
410
|
-
background-color: rgb(233, 255, 178);
|
411
|
-
display: block;
|
412
|
-
}
|
413
|
-
span.run66 {
|
414
|
-
background-color: rgb(235, 255, 178);
|
415
|
-
display: block;
|
416
|
-
}
|
417
|
-
span.run67 {
|
418
|
-
background-color: rgb(238, 255, 178);
|
419
|
-
display: block;
|
420
|
-
}
|
421
|
-
span.run68 {
|
422
|
-
background-color: rgb(240, 255, 178);
|
423
|
-
display: block;
|
424
|
-
}
|
425
|
-
span.run69 {
|
426
|
-
background-color: rgb(243, 255, 178);
|
427
|
-
display: block;
|
428
|
-
}
|
429
|
-
span.run70 {
|
430
|
-
background-color: rgb(247, 255, 178);
|
431
|
-
display: block;
|
432
|
-
}
|
433
|
-
span.run71 {
|
434
|
-
background-color: rgb(249, 255, 178);
|
435
|
-
display: block;
|
436
|
-
}
|
437
|
-
span.run72 {
|
438
|
-
background-color: rgb(252, 255, 178);
|
439
|
-
display: block;
|
440
|
-
}
|
441
|
-
span.run73 {
|
442
|
-
background-color: rgb(255, 255, 178);
|
443
|
-
display: block;
|
444
|
-
}
|
445
|
-
span.run74 {
|
446
|
-
background-color: rgb(255, 252, 178);
|
447
|
-
display: block;
|
448
|
-
}
|
449
|
-
span.run75 {
|
450
|
-
background-color: rgb(255, 248, 178);
|
451
|
-
display: block;
|
452
|
-
}
|
453
|
-
span.run76 {
|
454
|
-
background-color: rgb(255, 246, 178);
|
455
|
-
display: block;
|
456
|
-
}
|
457
|
-
span.run77 {
|
458
|
-
background-color: rgb(255, 243, 178);
|
459
|
-
display: block;
|
460
|
-
}
|
461
|
-
span.run78 {
|
462
|
-
background-color: rgb(255, 240, 178);
|
463
|
-
display: block;
|
464
|
-
}
|
465
|
-
span.run79 {
|
466
|
-
background-color: rgb(255, 238, 178);
|
467
|
-
display: block;
|
468
|
-
}
|
469
|
-
span.run80 {
|
470
|
-
background-color: rgb(255, 234, 178);
|
471
|
-
display: block;
|
472
|
-
}
|
473
|
-
span.run81 {
|
474
|
-
background-color: rgb(255, 232, 178);
|
475
|
-
display: block;
|
476
|
-
}
|
477
|
-
span.run82 {
|
478
|
-
background-color: rgb(255, 229, 178);
|
479
|
-
display: block;
|
480
|
-
}
|
481
|
-
span.run83 {
|
482
|
-
background-color: rgb(255, 226, 178);
|
483
|
-
display: block;
|
484
|
-
}
|
485
|
-
span.run84 {
|
486
|
-
background-color: rgb(255, 224, 178);
|
487
|
-
display: block;
|
488
|
-
}
|
489
|
-
span.run85 {
|
490
|
-
background-color: rgb(255, 220, 178);
|
491
|
-
display: block;
|
492
|
-
}
|
493
|
-
span.run86 {
|
494
|
-
background-color: rgb(255, 218, 178);
|
495
|
-
display: block;
|
496
|
-
}
|
497
|
-
span.run87 {
|
498
|
-
background-color: rgb(255, 215, 178);
|
499
|
-
display: block;
|
500
|
-
}
|
501
|
-
span.run88 {
|
502
|
-
background-color: rgb(255, 212, 178);
|
503
|
-
display: block;
|
504
|
-
}
|
505
|
-
span.run89 {
|
506
|
-
background-color: rgb(255, 210, 178);
|
507
|
-
display: block;
|
508
|
-
}
|
509
|
-
span.run90 {
|
510
|
-
background-color: rgb(255, 206, 178);
|
511
|
-
display: block;
|
512
|
-
}
|
513
|
-
span.run91 {
|
514
|
-
background-color: rgb(255, 204, 178);
|
515
|
-
display: block;
|
516
|
-
}
|
517
|
-
span.run92 {
|
518
|
-
background-color: rgb(255, 201, 178);
|
519
|
-
display: block;
|
520
|
-
}
|
521
|
-
span.run93 {
|
522
|
-
background-color: rgb(255, 198, 178);
|
523
|
-
display: block;
|
524
|
-
}
|
525
|
-
span.run94 {
|
526
|
-
background-color: rgb(255, 196, 178);
|
527
|
-
display: block;
|
528
|
-
}
|
529
|
-
span.run95 {
|
530
|
-
background-color: rgb(255, 192, 178);
|
531
|
-
display: block;
|
532
|
-
}
|
533
|
-
span.run96 {
|
534
|
-
background-color: rgb(255, 189, 178);
|
535
|
-
display: block;
|
536
|
-
}
|
537
|
-
span.run97 {
|
538
|
-
background-color: rgb(255, 187, 178);
|
539
|
-
display: block;
|
540
|
-
}
|
541
|
-
span.run98 {
|
542
|
-
background-color: rgb(255, 184, 178);
|
543
|
-
display: block;
|
544
|
-
}
|
545
|
-
span.run99 {
|
546
|
-
background-color: rgb(255, 182, 178);
|
547
|
-
display: block;
|
548
|
-
}
|
549
|
-
span.run100 {
|
550
|
-
background-color: rgb(255, 178, 178);
|
551
|
-
display: block;
|
552
|
-
}
|
553
|
-
</style>
|
554
|
-
</head>
|
555
|
-
<body><h3>C0 code coverage information</h3>
|
556
|
-
<p>Generated on Fri Dec 26 09:01:48 +0900 2008 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
|
557
|
-
</p>
|
558
|
-
<hr/>
|
559
|
-
<pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
560
|
-
</span><span class='marked1'>and this: this line is also marked as covered.
|
561
|
-
</span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
|
562
|
-
</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
|
563
|
-
</span><span class='uncovered0'>Finally, here's a line marked as not executed.
|
564
|
-
</span></pre>
|
565
|
-
<table class='report'><thead><tr><td class='heading'>Name</td>
|
566
|
-
<td class='heading'>Total lines</td>
|
567
|
-
<td class='heading'>Lines of code</td>
|
568
|
-
<td class='heading'>Total coverage</td>
|
569
|
-
<td class='heading'>Code coverage</td>
|
570
|
-
</tr>
|
571
|
-
</thead>
|
572
|
-
<tbody><tr class='light'><td><a href='lib-classx-attribute_rb.html'>lib/classx/attribute.rb</a>
|
573
|
-
</td>
|
574
|
-
<td class='lines_total'><tt>315</tt>
|
575
|
-
</td>
|
576
|
-
<td class='lines_code'><tt>244</tt>
|
577
|
-
</td>
|
578
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>98.7%</tt>
|
579
|
-
</td>
|
580
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='99'/>
|
581
|
-
<td class='uncovered' width='1'/>
|
582
|
-
</tr>
|
583
|
-
</table>
|
584
|
-
</td>
|
585
|
-
</tr>
|
586
|
-
</table>
|
587
|
-
</td>
|
588
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>98.4%</tt>
|
589
|
-
</td>
|
590
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='98'/>
|
591
|
-
<td class='uncovered' width='2'/>
|
592
|
-
</tr>
|
593
|
-
</table>
|
594
|
-
</td>
|
595
|
-
</tr>
|
596
|
-
</table>
|
597
|
-
</td>
|
598
|
-
</tr>
|
599
|
-
</tbody>
|
600
|
-
</table>
|
601
|
-
<pre><span class="marked1"><a name="line1"></a> 1 module ClassX
|
602
|
-
</span><span class="marked0"><a name="line2"></a> 2 module AttributeMethods #:nodoc:
|
603
|
-
</span><span class="marked1"><a name="line3"></a> 3 module ClassMethods #:nodoc:
|
604
|
-
</span><span class="marked0"><a name="line4"></a> 4 def value_class
|
605
|
-
</span><span class="marked1"><a name="line5"></a> 5 config[:isa] || config[:kind_of]
|
606
|
-
</span><span class="marked0"><a name="line6"></a> 6 end
|
607
|
-
</span><span class="inferred1"><a name="line7"></a> 7
|
608
|
-
</span><span class="inferred0"><a name="line8"></a> 8 # description for attribute
|
609
|
-
</span><span class="marked1"><a name="line9"></a> 9 def desc
|
610
|
-
</span><span class="uncovered0"><a name="line10"></a> 10 config[:desc]
|
611
|
-
</span><span class="uncovered1"><a name="line11"></a> 11 end
|
612
|
-
</span><span class="inferred0"><a name="line12"></a> 12
|
613
|
-
</span><span class="inferred1"><a name="line13"></a> 13 # when this option specify true, not raise error in #initialize without value.
|
614
|
-
</span><span class="marked0"><a name="line14"></a> 14 def optional?
|
615
|
-
</span><span class="marked1"><a name="line15"></a> 15 return config[:optional]
|
616
|
-
</span><span class="marked0"><a name="line16"></a> 16 end
|
617
|
-
</span><span class="inferred1"><a name="line17"></a> 17
|
618
|
-
</span><span class="inferred0"><a name="line18"></a> 18 # when it lazy option specified, it will not be initialized when #initialize.
|
619
|
-
</span><span class="marked1"><a name="line19"></a> 19 def lazy?
|
620
|
-
</span><span class="marked0"><a name="line20"></a> 20 return config[:lazy]
|
621
|
-
</span><span class="marked1"><a name="line21"></a> 21 end
|
622
|
-
</span><span class="inferred0"><a name="line22"></a> 22
|
623
|
-
</span><span class="marked1"><a name="line23"></a> 23 def inspect
|
624
|
-
</span><span class="uncovered0"><a name="line24"></a> 24 "ClassX::Attribute[#{self.config.inspect}]"
|
625
|
-
</span><span class="uncovered1"><a name="line25"></a> 25 end
|
626
|
-
</span><span class="inferred0"><a name="line26"></a> 26
|
627
|
-
</span><span class="marked1"><a name="line27"></a> 27 module CoerceWithHash #:nodoc:
|
628
|
-
</span><span class="marked0"><a name="line28"></a> 28 def coerce val
|
629
|
-
</span><span class="marked1"><a name="line29"></a> 29 result = val
|
630
|
-
</span><span class="marked0"><a name="line30"></a> 30 config[:coerce].each do |cond, rule|
|
631
|
-
</span><span class="marked1"><a name="line31"></a> 31 case cond
|
632
|
-
</span><span class="marked0"><a name="line32"></a> 32 when Proc
|
633
|
-
</span><span class="marked1"><a name="line33"></a> 33 if cond.call(val)
|
634
|
-
</span><span class="marked0"><a name="line34"></a> 34 result = rule.call(val)
|
635
|
-
</span><span class="marked1"><a name="line35"></a> 35 break
|
636
|
-
</span><span class="inferred0"><a name="line36"></a> 36 end
|
637
|
-
</span><span class="marked1"><a name="line37"></a> 37 when Symbol
|
638
|
-
</span><span class="marked0"><a name="line38"></a> 38 if val.respond_to? cond
|
639
|
-
</span><span class="marked1"><a name="line39"></a> 39 result = rule.call(val)
|
640
|
-
</span><span class="marked0"><a name="line40"></a> 40 break
|
641
|
-
</span><span class="inferred1"><a name="line41"></a> 41 end
|
642
|
-
</span><span class="marked0"><a name="line42"></a> 42 when Module
|
643
|
-
</span><span class="marked1"><a name="line43"></a> 43 if val.kind_of? cond
|
644
|
-
</span><span class="marked0"><a name="line44"></a> 44 result = rule.call(val)
|
645
|
-
</span><span class="marked1"><a name="line45"></a> 45 break
|
646
|
-
</span><span class="inferred0"><a name="line46"></a> 46 end
|
647
|
-
</span><span class="inferred1"><a name="line47"></a> 47 end
|
648
|
-
</span><span class="inferred0"><a name="line48"></a> 48 end
|
649
|
-
</span><span class="inferred1"><a name="line49"></a> 49
|
650
|
-
</span><span class="marked0"><a name="line50"></a> 50 return result
|
651
|
-
</span><span class="inferred1"><a name="line51"></a> 51 end
|
652
|
-
</span><span class="inferred0"><a name="line52"></a> 52 end
|
653
|
-
</span><span class="marked1"><a name="line53"></a> 53 module CoerceWithArray #:nodoc:
|
654
|
-
</span><span class="marked0"><a name="line54"></a> 54 def coerce val
|
655
|
-
</span><span class="marked1"><a name="line55"></a> 55 result = val
|
656
|
-
</span><span class="marked0"><a name="line56"></a> 56 config[:coerce].each do |item|
|
657
|
-
</span><span class="marked1"><a name="line57"></a> 57 raise unless item.kind_of? Hash
|
658
|
-
</span><span class="inferred0"><a name="line58"></a> 58
|
659
|
-
</span><span class="marked1"><a name="line59"></a> 59 case item
|
660
|
-
</span><span class="marked0"><a name="line60"></a> 60 when Hash
|
661
|
-
</span><span class="marked1"><a name="line61"></a> 61 item.each do |cond, rule|
|
662
|
-
</span><span class="marked0"><a name="line62"></a> 62 case cond
|
663
|
-
</span><span class="marked1"><a name="line63"></a> 63 when Proc
|
664
|
-
</span><span class="marked0"><a name="line64"></a> 64 if cond.call(val)
|
665
|
-
</span><span class="marked1"><a name="line65"></a> 65 result = rule.call(val)
|
666
|
-
</span><span class="marked0"><a name="line66"></a> 66 break
|
667
|
-
</span><span class="inferred1"><a name="line67"></a> 67 end
|
668
|
-
</span><span class="inferred0"><a name="line68"></a> 68 end
|
669
|
-
</span><span class="inferred1"><a name="line69"></a> 69
|
670
|
-
</span><span class="marked0"><a name="line70"></a> 70 break if result
|
671
|
-
</span><span class="inferred1"><a name="line71"></a> 71 end
|
672
|
-
</span><span class="inferred0"><a name="line72"></a> 72 end
|
673
|
-
</span><span class="inferred1"><a name="line73"></a> 73
|
674
|
-
</span><span class="marked0"><a name="line74"></a> 74 break if result
|
675
|
-
</span><span class="inferred1"><a name="line75"></a> 75 end
|
676
|
-
</span><span class="inferred0"><a name="line76"></a> 76
|
677
|
-
</span><span class="marked1"><a name="line77"></a> 77 return result
|
678
|
-
</span><span class="inferred0"><a name="line78"></a> 78 end
|
679
|
-
</span><span class="inferred1"><a name="line79"></a> 79 end
|
680
|
-
</span><span class="inferred0"><a name="line80"></a> 80
|
681
|
-
</span><span class="marked1"><a name="line81"></a> 81 module CoerceWithProc #:nodoc:
|
682
|
-
</span><span class="marked0"><a name="line82"></a> 82 def coerce val
|
683
|
-
</span><span class="marked1"><a name="line83"></a> 83 config[:coerce].call(val)
|
684
|
-
</span><span class="marked0"><a name="line84"></a> 84 end
|
685
|
-
</span><span class="inferred1"><a name="line85"></a> 85 end
|
686
|
-
</span><span class="inferred0"><a name="line86"></a> 86
|
687
|
-
</span><span class="marked1"><a name="line87"></a> 87 module CoerceNothing #:nodoc:
|
688
|
-
</span><span class="marked0"><a name="line88"></a> 88 def coerce val
|
689
|
-
</span><span class="marked1"><a name="line89"></a> 89 val
|
690
|
-
</span><span class="marked0"><a name="line90"></a> 90 end
|
691
|
-
</span><span class="inferred1"><a name="line91"></a> 91 end
|
692
|
-
</span><span class="inferred0"><a name="line92"></a> 92
|
693
|
-
</span><span class="marked1"><a name="line93"></a> 93 module DefaultWithProc #:nodoc:
|
694
|
-
</span><span class="marked0"><a name="line94"></a> 94 def default parent
|
695
|
-
</span><span class="marked1"><a name="line95"></a> 95 config[:default].call(parent)
|
696
|
-
</span><span class="marked0"><a name="line96"></a> 96 end
|
697
|
-
</span><span class="inferred1"><a name="line97"></a> 97 end
|
698
|
-
</span><span class="marked0"><a name="line98"></a> 98 module DefaultWithNoProc #:nodoc:
|
699
|
-
</span><span class="marked1"><a name="line99"></a> 99 def default parent
|
700
|
-
</span><span class="marked0"><a name="line100"></a>100 config[:default].dup
|
701
|
-
</span><span class="inferred1"><a name="line101"></a>101 rescue Exception
|
702
|
-
</span><span class="marked0"><a name="line102"></a>102 config[:default]
|
703
|
-
</span><span class="marked1"><a name="line103"></a>103 end
|
704
|
-
</span><span class="inferred0"><a name="line104"></a>104 end
|
705
|
-
</span><span class="inferred1"><a name="line105"></a>105
|
706
|
-
</span><span class="marked0"><a name="line106"></a>106 module ValidateWithProc #:nodoc:
|
707
|
-
</span><span class="marked1"><a name="line107"></a>107 def validate? val
|
708
|
-
</span><span class="marked0"><a name="line108"></a>108 return config[:validate].call(val)
|
709
|
-
</span><span class="marked1"><a name="line109"></a>109 end
|
710
|
-
</span><span class="inferred0"><a name="line110"></a>110 end
|
711
|
-
</span><span class="inferred1"><a name="line111"></a>111
|
712
|
-
</span><span class="marked0"><a name="line112"></a>112 module ValidateWithNotProc #:nodoc:
|
713
|
-
</span><span class="marked1"><a name="line113"></a>113 def validate? val
|
714
|
-
</span><span class="marked0"><a name="line114"></a>114 return config[:validate] === val
|
715
|
-
</span><span class="marked1"><a name="line115"></a>115 end
|
716
|
-
</span><span class="inferred0"><a name="line116"></a>116 end
|
717
|
-
</span><span class="inferred1"><a name="line117"></a>117
|
718
|
-
</span><span class="marked0"><a name="line118"></a>118 module ValidateEach #:nodoc:
|
719
|
-
</span><span class="marked1"><a name="line119"></a>119 def validate? val
|
720
|
-
</span><span class="marked0"><a name="line120"></a>120 return false unless val.respond_to? :all?
|
721
|
-
</span><span class="inferred1"><a name="line121"></a>121
|
722
|
-
</span><span class="marked0"><a name="line122"></a>122 if self.value_class
|
723
|
-
</span><span class="marked1"><a name="line123"></a>123 return false unless val.kind_of?(self.value_class)
|
724
|
-
</span><span class="inferred0"><a name="line124"></a>124
|
725
|
-
</span><span class="marked1"><a name="line125"></a>125 case val
|
726
|
-
</span><span class="marked0"><a name="line126"></a>126 when Hash
|
727
|
-
</span><span class="marked1"><a name="line127"></a>127 if config[:validate_each].arity == 2
|
728
|
-
</span><span class="marked0"><a name="line128"></a>128 val.all? {|item| config[:validate_each].call(*item) }
|
729
|
-
</span><span class="inferred1"><a name="line129"></a>129 else
|
730
|
-
</span><span class="marked0"><a name="line130"></a>130 ClassX::Validate.validate(val, &config[:validate_each])
|
731
|
-
</span><span class="inferred1"><a name="line131"></a>131 end
|
732
|
-
</span><span class="inferred0"><a name="line132"></a>132 else
|
733
|
-
</span><span class="marked1"><a name="line133"></a>133 val.all? {|item| config[:validate_each].call(*item) }
|
734
|
-
</span><span class="inferred0"><a name="line134"></a>134 end
|
735
|
-
</span><span class="inferred1"><a name="line135"></a>135 else
|
736
|
-
</span><span class="marked0"><a name="line136"></a>136 val.all? {|item| config[:validate_each].call(*item) }
|
737
|
-
</span><span class="inferred1"><a name="line137"></a>137 end
|
738
|
-
</span><span class="inferred0"><a name="line138"></a>138 end
|
739
|
-
</span><span class="inferred1"><a name="line139"></a>139 end
|
740
|
-
</span><span class="inferred0"><a name="line140"></a>140
|
741
|
-
</span><span class="marked1"><a name="line141"></a>141 module ValidateKindOf #:nodoc:
|
742
|
-
</span><span class="marked0"><a name="line142"></a>142 def validate? val
|
743
|
-
</span><span class="marked1"><a name="line143"></a>143 return val.kind_of?(self.value_class)
|
744
|
-
</span><span class="marked0"><a name="line144"></a>144 end
|
745
|
-
</span><span class="inferred1"><a name="line145"></a>145 end
|
746
|
-
</span><span class="inferred0"><a name="line146"></a>146
|
747
|
-
</span><span class="marked1"><a name="line147"></a>147 module ValidateRespondTo #:nodoc:
|
748
|
-
</span><span class="marked0"><a name="line148"></a>148 def validate? val
|
749
|
-
</span><span class="marked1"><a name="line149"></a>149 return val.respond_to?(config[:respond_to])
|
750
|
-
</span><span class="marked0"><a name="line150"></a>150 end
|
751
|
-
</span><span class="inferred1"><a name="line151"></a>151 end
|
752
|
-
</span><span class="inferred0"><a name="line152"></a>152
|
753
|
-
</span><span class="marked1"><a name="line153"></a>153 module ValidateNothing #:nodoc:
|
754
|
-
</span><span class="marked0"><a name="line154"></a>154 def validate? val
|
755
|
-
</span><span class="inferred1"><a name="line155"></a>155 # nothing checked.
|
756
|
-
</span><span class="marked0"><a name="line156"></a>156 true
|
757
|
-
</span><span class="marked1"><a name="line157"></a>157 end
|
758
|
-
</span><span class="inferred0"><a name="line158"></a>158 end
|
759
|
-
</span><span class="inferred1"><a name="line159"></a>159
|
760
|
-
</span><span class="marked0"><a name="line160"></a>160 module TriggerArrayProc #:nodoc:
|
761
|
-
</span><span class="marked1"><a name="line161"></a>161 def trigger parent, val
|
762
|
-
</span><span class="marked0"><a name="line162"></a>162 config[:trigger].each do |trg|
|
763
|
-
</span><span class="marked1"><a name="line163"></a>163 trg.call(parent, val)
|
764
|
-
</span><span class="inferred0"><a name="line164"></a>164 end
|
765
|
-
</span><span class="marked1"><a name="line165"></a>165 end
|
766
|
-
</span><span class="inferred0"><a name="line166"></a>166 end
|
767
|
-
</span><span class="inferred1"><a name="line167"></a>167 end
|
768
|
-
</span><span class="inferred0"><a name="line168"></a>168
|
769
|
-
</span><span class="marked1"><a name="line169"></a>169 module InstanceMethods #:nodoc:
|
770
|
-
</span><span class="marked0"><a name="line170"></a>170 def initialize val
|
771
|
-
</span><span class="marked1"><a name="line171"></a>171 @parent = val
|
772
|
-
</span><span class="marked0"><a name="line172"></a>172 @data = nil
|
773
|
-
</span><span class="inferred1"><a name="line173"></a>173 end
|
774
|
-
</span><span class="inferred0"><a name="line174"></a>174
|
775
|
-
</span><span class="marked1"><a name="line175"></a>175 def get
|
776
|
-
</span><span class="marked0"><a name="line176"></a>176 @data ||= self.class.default(@parent)
|
777
|
-
</span><span class="marked1"><a name="line177"></a>177 end
|
778
|
-
</span><span class="inferred0"><a name="line178"></a>178
|
779
|
-
</span><span class="inferred1"><a name="line179"></a>179 # XXX:
|
780
|
-
</span><span class="inferred0"><a name="line180"></a>180 # you should not call this method except for @parent instance's setter method.
|
781
|
-
</span><span class="inferred1"><a name="line181"></a>181 # It's because caching as instance_variable in @parent instance for performance.
|
782
|
-
</span><span class="marked0"><a name="line182"></a>182 def set val
|
783
|
-
</span><span class="marked1"><a name="line183"></a>183 val = self.class.coerce(val)
|
784
|
-
</span><span class="marked0"><a name="line184"></a>184 raise ClassX::InvalidAttrArgument, "#{val.inspect} is not valid for #{self.inspect}" unless self.class.validate? val
|
785
|
-
</span><span class="marked1"><a name="line185"></a>185 @data = val
|
786
|
-
</span><span class="inferred0"><a name="line186"></a>186
|
787
|
-
</span><span class="marked1"><a name="line187"></a>187 self.class.trigger(@parent, val)
|
788
|
-
</span><span class="marked0"><a name="line188"></a>188 @data
|
789
|
-
</span><span class="inferred1"><a name="line189"></a>189 end
|
790
|
-
</span><span class="inferred0"><a name="line190"></a>190
|
791
|
-
</span><span class="marked1"><a name="line191"></a>191 def inspect
|
792
|
-
</span><span class="marked0"><a name="line192"></a>192 "<#ClassX::Attribute:#{object_id} #{ @data.nil? ? '@data=nil' : '@data=' + @data.inspect } @parent=#{@parent} config=#{self.class.config.inspect}>"
|
793
|
-
</span><span class="marked1"><a name="line193"></a>193 end
|
794
|
-
</span><span class="inferred0"><a name="line194"></a>194 end
|
795
|
-
</span><span class="inferred1"><a name="line195"></a>195 end
|
796
|
-
</span><span class="inferred0"><a name="line196"></a>196
|
797
|
-
</span><span class="inferred1"><a name="line197"></a>197 #
|
798
|
-
</span><span class="inferred0"><a name="line198"></a>198 # generating anonymous class for meta attribute class.
|
799
|
-
</span><span class="inferred1"><a name="line199"></a>199 #
|
800
|
-
</span><span class="marked0"><a name="line200"></a>200 class AttributeFactory
|
801
|
-
</span><span class="inferred1"><a name="line201"></a>201 #
|
802
|
-
</span><span class="inferred0"><a name="line202"></a>202 # creating anonymous class for meta attribute class.
|
803
|
-
</span><span class="marked1"><a name="line203"></a>203 def self.create args
|
804
|
-
</span><span class="inferred0"><a name="line204"></a>204 # TODO: hmm, ClassX::Commandable do nothing when freezed.
|
805
|
-
</span><span class="inferred1"><a name="line205"></a>205 #
|
806
|
-
</span><span class="inferred0"><a name="line206"></a>206 # if you would like to change attribute's infomation, it's better to redefine attribute.
|
807
|
-
</span><span class="inferred1"><a name="line207"></a>207 # So, config should freezed.
|
808
|
-
</span><span class="inferred0"><a name="line208"></a>208 # args.each do |key, val|
|
809
|
-
</span><span class="inferred1"><a name="line209"></a>209 # key.freeze
|
810
|
-
</span><span class="inferred0"><a name="line210"></a>210 # val.freeze
|
811
|
-
</span><span class="inferred1"><a name="line211"></a>211 # end
|
812
|
-
</span><span class="inferred0"><a name="line212"></a>212 # args.freeze
|
813
|
-
</span><span class="inferred1"><a name="line213"></a>213
|
814
|
-
</span><span class="marked0"><a name="line214"></a>214 raise ClassX::RequiredAttrShouldNotHaveDefault if args[:optional] == false && !args[:default].nil?
|
815
|
-
</span><span class="marked1"><a name="line215"></a>215 raise ClassX::OptionalAttrShouldBeWritable if args[:optional] && args[:writable] == false
|
816
|
-
</span><span class="inferred0"><a name="line216"></a>216
|
817
|
-
</span><span class="marked1"><a name="line217"></a>217 klass = Class.new
|
818
|
-
</span><span class="inferred0"><a name="line218"></a>218
|
819
|
-
</span><span class="marked1"><a name="line219"></a>219 klass.extend(ClassX::AttributeMethods::ClassMethods)
|
820
|
-
</span><span class="inferred0"><a name="line220"></a>220
|
821
|
-
</span><span class="inferred1"><a name="line221"></a>221 # you specify type changing rule with :coerce option.
|
822
|
-
</span><span class="marked0"><a name="line222"></a>222 if args[:coerce]
|
823
|
-
</span><span class="marked1"><a name="line223"></a>223 case args[:coerce]
|
824
|
-
</span><span class="marked0"><a name="line224"></a>224 when Hash
|
825
|
-
</span><span class="marked1"><a name="line225"></a>225 klass.extend(ClassX::AttributeMethods::ClassMethods::CoerceWithHash)
|
826
|
-
</span><span class="marked0"><a name="line226"></a>226 when Array
|
827
|
-
</span><span class="marked1"><a name="line227"></a>227 klass.extend(ClassX::AttributeMethods::ClassMethods::CoerceWithArray)
|
828
|
-
</span><span class="marked0"><a name="line228"></a>228 when Proc
|
829
|
-
</span><span class="marked1"><a name="line229"></a>229 klass.extend(ClassX::AttributeMethods::ClassMethods::CoerceWithProc)
|
830
|
-
</span><span class="inferred0"><a name="line230"></a>230 end
|
831
|
-
</span><span class="inferred1"><a name="line231"></a>231 else
|
832
|
-
</span><span class="marked0"><a name="line232"></a>232 klass.extend(ClassX::AttributeMethods::ClassMethods::CoerceNothing)
|
833
|
-
</span><span class="inferred1"><a name="line233"></a>233 end
|
834
|
-
</span><span class="inferred0"><a name="line234"></a>234
|
835
|
-
</span><span class="inferred1"><a name="line235"></a>235 # default paramater for attribute.
|
836
|
-
</span><span class="inferred0"><a name="line236"></a>236 # if default is Proc, run Proc every time in instanciate.
|
837
|
-
</span><span class="marked1"><a name="line237"></a>237 case args[:default]
|
838
|
-
</span><span class="marked0"><a name="line238"></a>238 when Proc
|
839
|
-
</span><span class="marked1"><a name="line239"></a>239 klass.extend(ClassX::AttributeMethods::ClassMethods::DefaultWithProc)
|
840
|
-
</span><span class="inferred0"><a name="line240"></a>240 else
|
841
|
-
</span><span class="marked1"><a name="line241"></a>241 klass.extend(ClassX::AttributeMethods::ClassMethods::DefaultWithNoProc)
|
842
|
-
</span><span class="inferred0"><a name="line242"></a>242 end
|
843
|
-
</span><span class="inferred1"><a name="line243"></a>243
|
844
|
-
</span><span class="inferred0"><a name="line244"></a>244 # you can specify :validate option for checking when value is setted.
|
845
|
-
</span><span class="inferred1"><a name="line245"></a>245 # you can use :respond_to as shotcut for specifying { :validate => proc {|val| respond_to?(val, true) } }
|
846
|
-
</span><span class="inferred0"><a name="line246"></a>246 # you can use :isa or :kind_of as shotcut for specifying { :validate => proc {|val| kind_of?(val) } }
|
847
|
-
</span><span class="marked1"><a name="line247"></a>247 if args[:validate]
|
848
|
-
</span><span class="marked0"><a name="line248"></a>248 case args[:validate]
|
849
|
-
</span><span class="marked1"><a name="line249"></a>249 when Proc
|
850
|
-
</span><span class="marked0"><a name="line250"></a>250 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateWithProc)
|
851
|
-
</span><span class="inferred1"><a name="line251"></a>251 else
|
852
|
-
</span><span class="marked0"><a name="line252"></a>252 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateWithNotProc)
|
853
|
-
</span><span class="inferred1"><a name="line253"></a>253 end
|
854
|
-
</span><span class="marked0"><a name="line254"></a>254 elsif args[:validate_each]
|
855
|
-
</span><span class="marked1"><a name="line255"></a>255 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateEach)
|
856
|
-
</span><span class="marked0"><a name="line256"></a>256 elsif mod = ( args[:isa] || args[:kind_of] )
|
857
|
-
</span><span class="marked1"><a name="line257"></a>257 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateKindOf)
|
858
|
-
</span><span class="marked0"><a name="line258"></a>258 elsif args[:respond_to]
|
859
|
-
</span><span class="marked1"><a name="line259"></a>259 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateRespondTo)
|
860
|
-
</span><span class="inferred0"><a name="line260"></a>260 else
|
861
|
-
</span><span class="marked1"><a name="line261"></a>261 klass.extend(ClassX::AttributeMethods::ClassMethods::ValidateNothing)
|
862
|
-
</span><span class="inferred0"><a name="line262"></a>262 end
|
863
|
-
</span><span class="inferred1"><a name="line263"></a>263
|
864
|
-
</span><span class="inferred0"><a name="line264"></a>264 # you can specify :trigger option for invoking event on setting value to attribute.
|
865
|
-
</span><span class="inferred1"><a name="line265"></a>265 # :trigger should take Proc or multi Proc Array.
|
866
|
-
</span><span class="marked0"><a name="line266"></a>266 if args[:trigger]
|
867
|
-
</span><span class="marked1"><a name="line267"></a>267 unless args[:trigger].kind_of?(Array)
|
868
|
-
</span><span class="marked0"><a name="line268"></a>268 args[:trigger] = [ args[:trigger] ]
|
869
|
-
</span><span class="inferred1"><a name="line269"></a>269 end
|
870
|
-
</span><span class="marked0"><a name="line270"></a>270 klass.extend(ClassX::AttributeMethods::ClassMethods::TriggerArrayProc)
|
871
|
-
</span><span class="inferred1"><a name="line271"></a>271 else
|
872
|
-
</span><span class="marked0"><a name="line272"></a>272 args[:trigger] = []
|
873
|
-
</span><span class="marked1"><a name="line273"></a>273 klass.extend(ClassX::AttributeMethods::ClassMethods::TriggerArrayProc)
|
874
|
-
</span><span class="inferred0"><a name="line274"></a>274 end
|
875
|
-
</span><span class="inferred1"><a name="line275"></a>275
|
876
|
-
</span><span class="inferred0"><a name="line276"></a>276 # for extending attribute point.
|
877
|
-
</span><span class="marked1"><a name="line277"></a>277 if args[:include]
|
878
|
-
</span><span class="marked0"><a name="line278"></a>278 case args[:include]
|
879
|
-
</span><span class="marked1"><a name="line279"></a>279 when Array
|
880
|
-
</span><span class="marked0"><a name="line280"></a>280 args[:include].each do |mod|
|
881
|
-
</span><span class="marked1"><a name="line281"></a>281 klass.__send__ :include, mod
|
882
|
-
</span><span class="inferred0"><a name="line282"></a>282 end
|
883
|
-
</span><span class="inferred1"><a name="line283"></a>283 else
|
884
|
-
</span><span class="marked0"><a name="line284"></a>284 klass.__send__ :include, args[:include]
|
885
|
-
</span><span class="inferred1"><a name="line285"></a>285 end
|
886
|
-
</span><span class="inferred0"><a name="line286"></a>286 end
|
887
|
-
</span><span class="inferred1"><a name="line287"></a>287
|
888
|
-
</span><span class="marked0"><a name="line288"></a>288 if args[:extend]
|
889
|
-
</span><span class="marked1"><a name="line289"></a>289 case args[:extend]
|
890
|
-
</span><span class="marked0"><a name="line290"></a>290 when Array
|
891
|
-
</span><span class="marked1"><a name="line291"></a>291 args[:extend].each do |mod|
|
892
|
-
</span><span class="marked0"><a name="line292"></a>292 klass.__send__ :extend, mod
|
893
|
-
</span><span class="inferred1"><a name="line293"></a>293 end
|
894
|
-
</span><span class="inferred0"><a name="line294"></a>294 else
|
895
|
-
</span><span class="marked1"><a name="line295"></a>295 klass.__send__ :extend, args[:extend]
|
896
|
-
</span><span class="inferred0"><a name="line296"></a>296 end
|
897
|
-
</span><span class="inferred1"><a name="line297"></a>297 end
|
898
|
-
</span><span class="inferred0"><a name="line298"></a>298
|
899
|
-
</span><span class="inferred1"><a name="line299"></a>299 # XXX: Hack for defining class method for klass
|
900
|
-
</span><span class="marked0"><a name="line300"></a>300 tmp_mod = Module.new
|
901
|
-
</span><span class="marked1"><a name="line301"></a>301 tmp_mod.module_eval do
|
902
|
-
</span><span class="marked0"><a name="line302"></a>302 define_method :config do
|
903
|
-
</span><span class="marked1"><a name="line303"></a>303 args
|
904
|
-
</span><span class="inferred0"><a name="line304"></a>304 end
|
905
|
-
</span><span class="inferred1"><a name="line305"></a>305 end
|
906
|
-
</span><span class="marked0"><a name="line306"></a>306 klass.extend(tmp_mod)
|
907
|
-
</span><span class="inferred1"><a name="line307"></a>307
|
908
|
-
</span><span class="marked0"><a name="line308"></a>308 klass.class_eval do
|
909
|
-
</span><span class="marked1"><a name="line309"></a>309 include ClassX::AttributeMethods::InstanceMethods
|
910
|
-
</span><span class="inferred0"><a name="line310"></a>310 end
|
911
|
-
</span><span class="inferred1"><a name="line311"></a>311
|
912
|
-
</span><span class="marked0"><a name="line312"></a>312 klass
|
913
|
-
</span><span class="inferred1"><a name="line313"></a>313 end
|
914
|
-
</span><span class="inferred0"><a name="line314"></a>314 end
|
915
|
-
</span><span class="inferred1"><a name="line315"></a>315 end
|
916
|
-
</span></pre><hr/>
|
917
|
-
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
918
|
-
version 0.8.1.2.</p>
|
919
|
-
<p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88'/>
|
920
|
-
</a>
|
921
|
-
<a href='http://jigsaw.w3.org/css-validator/check/referer'><img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px'/>
|
922
|
-
</a>
|
923
|
-
</p>
|
924
|
-
</body>
|
925
|
-
</html>
|