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,775 +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/class_attributes.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-class_attributes_rb.html'>lib/classx/class_attributes.rb</a>
|
573
|
-
</td>
|
574
|
-
<td class='lines_total'><tt>165</tt>
|
575
|
-
</td>
|
576
|
-
<td class='lines_code'><tt>108</tt>
|
577
|
-
</td>
|
578
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>95.2%</tt>
|
579
|
-
</td>
|
580
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='95'/>
|
581
|
-
<td class='uncovered' width='5'/>
|
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'>92.6%</tt>
|
589
|
-
</td>
|
590
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='93'/>
|
591
|
-
<td class='uncovered' width='7'/>
|
592
|
-
</tr>
|
593
|
-
</table>
|
594
|
-
</td>
|
595
|
-
</tr>
|
596
|
-
</table>
|
597
|
-
</td>
|
598
|
-
</tr>
|
599
|
-
</tbody>
|
600
|
-
</table>
|
601
|
-
<pre><span class="inferred0"><a name="line1"></a> 1
|
602
|
-
</span><span class="inferred1"><a name="line2"></a> 2
|
603
|
-
</span><span class="marked0"><a name="line3"></a> 3 module ClassX
|
604
|
-
</span><span class="inferred1"><a name="line4"></a> 4 #
|
605
|
-
</span><span class="inferred0"><a name="line5"></a> 5 # for easy defining inheritable class accessor using classx attribute interface.
|
606
|
-
</span><span class="inferred1"><a name="line6"></a> 6 #
|
607
|
-
</span><span class="inferred0"><a name="line7"></a> 7 # require 'classx'
|
608
|
-
</span><span class="inferred1"><a name="line8"></a> 8 # class YourClass
|
609
|
-
</span><span class="inferred0"><a name="line9"></a> 9 # extend ClassX::ClassAttributes
|
610
|
-
</span><span class="inferred1"><a name="line10"></a> 10 #
|
611
|
-
</span><span class="inferred0"><a name="line11"></a> 11 # class_has :table_name, :writable => true, :default => proc {|klass| klass.to_s.downcase }
|
612
|
-
</span><span class="inferred1"><a name="line12"></a> 12 # end
|
613
|
-
</span><span class="inferred0"><a name="line13"></a> 13 #
|
614
|
-
</span><span class="inferred1"><a name="line14"></a> 14 # YourClass.table_name #=> 'yourclass'
|
615
|
-
</span><span class="inferred0"><a name="line15"></a> 15 # YourClass.table_name = 'test'
|
616
|
-
</span><span class="inferred1"><a name="line16"></a> 16 # YourClass.table_name #=> 'test'
|
617
|
-
</span><span class="inferred0"><a name="line17"></a> 17 #
|
618
|
-
</span><span class="inferred1"><a name="line18"></a> 18 # class SubClass < YourClass
|
619
|
-
</span><span class="inferred0"><a name="line19"></a> 19 # end
|
620
|
-
</span><span class="inferred1"><a name="line20"></a> 20 #
|
621
|
-
</span><span class="inferred0"><a name="line21"></a> 21 # SubClass.table_name #=> 'subclass' # it's not "test"!!
|
622
|
-
</span><span class="inferred1"><a name="line22"></a> 22 #
|
623
|
-
</span><span class="inferred0"><a name="line23"></a> 23 # # you can also write following:
|
624
|
-
</span><span class="inferred1"><a name="line24"></a> 24 # SubClass.table_name('test2')
|
625
|
-
</span><span class="inferred0"><a name="line25"></a> 25 # SubClass.table_name #=> 'test2'
|
626
|
-
</span><span class="inferred1"><a name="line26"></a> 26 #
|
627
|
-
</span><span class="inferred0"><a name="line27"></a> 27 #
|
628
|
-
</span><span class="inferred1"><a name="line28"></a> 28 # == SEE ALSO
|
629
|
-
</span><span class="inferred0"><a name="line29"></a> 29 # dsl_accessor:
|
630
|
-
</span><span class="inferred1"><a name="line30"></a> 30 # It's have also similar functions. It's implemented simply using activesupport's inheritable_accessor.
|
631
|
-
</span><span class="inferred0"><a name="line31"></a> 31 # classx is complex but more extensible to define class attribute.
|
632
|
-
</span><span class="inferred1"><a name="line32"></a> 32 #
|
633
|
-
</span><span class="marked0"><a name="line33"></a> 33 module ClassAttributes
|
634
|
-
</span><span class="marked1"><a name="line34"></a> 34 CLASS_ATTRIBUTE_REGEX = /\Aclass_attribute_of:(\w+)\z/
|
635
|
-
</span><span class="inferred0"><a name="line35"></a> 35
|
636
|
-
</span><span class="marked1"><a name="line36"></a> 36 def class_attribute_of
|
637
|
-
</span><span class="marked0"><a name="line37"></a> 37 unless instance_variable_defined?('@__class_attribute_of') && @__class_attribute_of
|
638
|
-
</span><span class="marked1"><a name="line38"></a> 38 @__class_attribute_of = {}
|
639
|
-
</span><span class="marked0"><a name="line39"></a> 39 private_methods.select {|meth| meth.to_s =~ CLASS_ATTRIBUTE_REGEX }.each do |meth|
|
640
|
-
</span><span class="marked1"><a name="line40"></a> 40 key = meth.to_s.sub(CLASS_ATTRIBUTE_REGEX) { $1 }
|
641
|
-
</span><span class="marked0"><a name="line41"></a> 41 @__class_attribute_of[key] = __send__("class_attribute_of:#{key}").new(self)
|
642
|
-
</span><span class="inferred1"><a name="line42"></a> 42 end
|
643
|
-
</span><span class="inferred0"><a name="line43"></a> 43 end
|
644
|
-
</span><span class="inferred1"><a name="line44"></a> 44
|
645
|
-
</span><span class="marked0"><a name="line45"></a> 45 @__class_attribute_of
|
646
|
-
</span><span class="inferred1"><a name="line46"></a> 46 end
|
647
|
-
</span><span class="inferred0"><a name="line47"></a> 47
|
648
|
-
</span><span class="marked1"><a name="line48"></a> 48 private
|
649
|
-
</span><span class="marked0"><a name="line49"></a> 49 def define_class_attribute name, attribute
|
650
|
-
</span><span class="marked1"><a name="line50"></a> 50 klass_attribute = ClassX::AttributeFactory.create(attribute)
|
651
|
-
</span><span class="marked0"><a name="line51"></a> 51 mod = nil
|
652
|
-
</span><span class="marked1"><a name="line52"></a> 52 if self.const_defined? 'ClassMethods'
|
653
|
-
</span><span class="marked0"><a name="line53"></a> 53 mod = self.const_get('ClassMethods')
|
654
|
-
</span><span class="inferred1"><a name="line54"></a> 54 else
|
655
|
-
</span><span class="marked0"><a name="line55"></a> 55 mod = Module.new
|
656
|
-
</span><span class="marked1"><a name="line56"></a> 56 const_set('ClassMethods', mod)
|
657
|
-
</span><span class="inferred0"><a name="line57"></a> 57 end
|
658
|
-
</span><span class="marked1"><a name="line58"></a> 58 mod.module_eval do
|
659
|
-
</span><span class="marked0"><a name="line59"></a> 59 define_method "class_attribute_of:#{name}" do
|
660
|
-
</span><span class="marked1"><a name="line60"></a> 60 klass_attribute
|
661
|
-
</span><span class="inferred0"><a name="line61"></a> 61 end
|
662
|
-
</span><span class="inferred1"><a name="line62"></a> 62
|
663
|
-
</span><span class="marked0"><a name="line63"></a> 63 private "class_attribute_of:#{name}"
|
664
|
-
</span><span class="inferred1"><a name="line64"></a> 64 end
|
665
|
-
</span><span class="marked0"><a name="line65"></a> 65 self.extend(mod)
|
666
|
-
</span><span class="marked1"><a name="line66"></a> 66 @__class_attribute_of ||= self.class_attribute_of
|
667
|
-
</span><span class="marked0"><a name="line67"></a> 67 @__class_attribute_of[name] = klass_attribute.new(self)
|
668
|
-
</span><span class="inferred1"><a name="line68"></a> 68
|
669
|
-
</span><span class="marked0"><a name="line69"></a> 69 klass_attribute
|
670
|
-
</span><span class="inferred1"><a name="line70"></a> 70 end
|
671
|
-
</span><span class="inferred0"><a name="line71"></a> 71
|
672
|
-
</span><span class="marked1"><a name="line72"></a> 72 def add_class_attribute name, attrs={}
|
673
|
-
</span><span class="marked0"><a name="line73"></a> 73 name = name.to_s
|
674
|
-
</span><span class="inferred1"><a name="line74"></a> 74
|
675
|
-
</span><span class="marked0"><a name="line75"></a> 75 attr_class = define_class_attribute(name, attrs)
|
676
|
-
</span><span class="inferred1"><a name="line76"></a> 76
|
677
|
-
</span><span class="marked0"><a name="line77"></a> 77 mod = nil
|
678
|
-
</span><span class="marked1"><a name="line78"></a> 78 if self.const_defined? 'ClassMethods'
|
679
|
-
</span><span class="marked0"><a name="line79"></a> 79 mod = self.const_get('ClassMethods')
|
680
|
-
</span><span class="uncovered1"><a name="line80"></a> 80 else
|
681
|
-
</span><span class="uncovered0"><a name="line81"></a> 81 mod = Module.new
|
682
|
-
</span><span class="uncovered1"><a name="line82"></a> 82 const_set('ClassMethods', mod)
|
683
|
-
</span><span class="uncovered0"><a name="line83"></a> 83 end
|
684
|
-
</span><span class="marked1"><a name="line84"></a> 84 mod.module_eval do
|
685
|
-
</span><span class="inferred0"><a name="line85"></a> 85 # XXX: Why this can take *args?
|
686
|
-
</span><span class="inferred1"><a name="line86"></a> 86 # => It's for avoid warnings when you call it without values.
|
687
|
-
</span><span class="marked0"><a name="line87"></a> 87 define_method name do |*vals|
|
688
|
-
</span><span class="marked1"><a name="line88"></a> 88 name = name.to_s
|
689
|
-
</span><span class="marked0"><a name="line89"></a> 89 if vals == []
|
690
|
-
</span><span class="marked1"><a name="line90"></a> 90 @__class_attribute_data_of ||= {}
|
691
|
-
</span><span class="marked0"><a name="line91"></a> 91 if @__class_attribute_data_of[name]
|
692
|
-
</span><span class="marked1"><a name="line92"></a> 92 return @__class_attribute_data_of[name]
|
693
|
-
</span><span class="inferred0"><a name="line93"></a> 93 else
|
694
|
-
</span><span class="marked1"><a name="line94"></a> 94 attr_instance = nil
|
695
|
-
</span><span class="marked0"><a name="line95"></a> 95 if instance_variable_defined?('@__class_attribute_of') && @__class_attribute_of
|
696
|
-
</span><span class="marked1"><a name="line96"></a> 96 attr_instance = @__class_attribute_of[name]
|
697
|
-
</span><span class="inferred0"><a name="line97"></a> 97 else
|
698
|
-
</span><span class="marked1"><a name="line98"></a> 98 @__class_attribute_of = self.class_attribute_of
|
699
|
-
</span><span class="marked0"><a name="line99"></a> 99 attr_instance = @__class_attribute_of[name]
|
700
|
-
</span><span class="inferred1"><a name="line100"></a>100 end
|
701
|
-
</span><span class="marked0"><a name="line101"></a>101 result = attr_instance.get
|
702
|
-
</span><span class="marked1"><a name="line102"></a>102 raise ClassX::AttrRequiredError if result.nil? && !attr_instance.class.config[:optional]
|
703
|
-
</span><span class="marked0"><a name="line103"></a>103 return @__class_attribute_data_of[name] = result
|
704
|
-
</span><span class="inferred1"><a name="line104"></a>104 end
|
705
|
-
</span><span class="inferred0"><a name="line105"></a>105 else
|
706
|
-
</span><span class="marked1"><a name="line106"></a>106 raise ArgumentError if vals.size > 1
|
707
|
-
</span><span class="marked0"><a name="line107"></a>107 val = vals.first
|
708
|
-
</span><span class="inferred1"><a name="line108"></a>108 # TODO: It's not consider whether setter method is writable.
|
709
|
-
</span><span class="inferred0"><a name="line109"></a>109 # I want to write following when setter method is private:
|
710
|
-
</span><span class="inferred1"><a name="line110"></a>110 #
|
711
|
-
</span><span class="inferred0"><a name="line111"></a>111 # class SomeClass
|
712
|
-
</span><span class="inferred1"><a name="line112"></a>112 # class_has :attr
|
713
|
-
</span><span class="inferred0"><a name="line113"></a>113 # attr 'setting value example'
|
714
|
-
</span><span class="inferred1"><a name="line114"></a>114 # self.attr = 'stting value example' # It's same meaning above but longer and not declaretive.
|
715
|
-
</span><span class="inferred0"><a name="line115"></a>115 # end
|
716
|
-
</span><span class="inferred1"><a name="line116"></a>116 #
|
717
|
-
</span><span class="marked0"><a name="line117"></a>117 __send__ "#{name}=", val
|
718
|
-
</span><span class="inferred1"><a name="line118"></a>118 end
|
719
|
-
</span><span class="inferred0"><a name="line119"></a>119 end
|
720
|
-
</span><span class="inferred1"><a name="line120"></a>120
|
721
|
-
</span><span class="marked0"><a name="line121"></a>121 define_method "#{name}=" do |val|
|
722
|
-
</span><span class="marked1"><a name="line122"></a>122 nam = name.to_s
|
723
|
-
</span><span class="marked0"><a name="line123"></a>123 attr_instance = nil
|
724
|
-
</span><span class="marked1"><a name="line124"></a>124 if @__class_attribute_of
|
725
|
-
</span><span class="marked0"><a name="line125"></a>125 attr_instance = @__class_attribute_of[name]
|
726
|
-
</span><span class="uncovered1"><a name="line126"></a>126 else
|
727
|
-
</span><span class="uncovered0"><a name="line127"></a>127 @__class_attribute_of = self.class_attribute_of
|
728
|
-
</span><span class="uncovered1"><a name="line128"></a>128 attr_instance = @__class_attribute_of[name]
|
729
|
-
</span><span class="uncovered0"><a name="line129"></a>129 end
|
730
|
-
</span><span class="inferred1"><a name="line130"></a>130
|
731
|
-
</span><span class="marked0"><a name="line131"></a>131 attr_instance.set val
|
732
|
-
</span><span class="marked1"><a name="line132"></a>132 @__class_attribute_data_of ||= {}
|
733
|
-
</span><span class="marked0"><a name="line133"></a>133 @__class_attribute_data_of[name] = val
|
734
|
-
</span><span class="inferred1"><a name="line134"></a>134 end
|
735
|
-
</span><span class="inferred0"><a name="line135"></a>135
|
736
|
-
</span><span class="marked1"><a name="line136"></a>136 if attr_class.config[:writable] == false
|
737
|
-
</span><span class="marked0"><a name="line137"></a>137 private "#{name}="
|
738
|
-
</span><span class="inferred1"><a name="line138"></a>138 end
|
739
|
-
</span><span class="inferred0"><a name="line139"></a>139
|
740
|
-
</span><span class="marked1"><a name="line140"></a>140 if attr_class.config[:handles]
|
741
|
-
</span><span class="marked0"><a name="line141"></a>141 case attr_class.config[:handles]
|
742
|
-
</span><span class="marked1"><a name="line142"></a>142 when Hash
|
743
|
-
</span><span class="marked0"><a name="line143"></a>143 attr_class.config[:handles].each do |before, after|
|
744
|
-
</span><span class="marked1"><a name="line144"></a>144 define_method before do |*args|
|
745
|
-
</span><span class="marked0"><a name="line145"></a>145 __send__("#{name}").__send__ after, *args
|
746
|
-
</span><span class="inferred1"><a name="line146"></a>146 end
|
747
|
-
</span><span class="inferred0"><a name="line147"></a>147 end
|
748
|
-
</span><span class="marked1"><a name="line148"></a>148 when Array
|
749
|
-
</span><span class="marked0"><a name="line149"></a>149 attr_class.config[:handles].each do |meth|
|
750
|
-
</span><span class="marked1"><a name="line150"></a>150 define_method meth do |*args|
|
751
|
-
</span><span class="marked0"><a name="line151"></a>151 __send__("#{name}").__send__ meth, *args
|
752
|
-
</span><span class="inferred1"><a name="line152"></a>152 end
|
753
|
-
</span><span class="inferred0"><a name="line153"></a>153 end
|
754
|
-
</span><span class="inferred1"><a name="line154"></a>154 end
|
755
|
-
</span><span class="inferred0"><a name="line155"></a>155 end
|
756
|
-
</span><span class="inferred1"><a name="line156"></a>156 end
|
757
|
-
</span><span class="marked0"><a name="line157"></a>157 self.extend(mod)
|
758
|
-
</span><span class="inferred1"><a name="line158"></a>158 end
|
759
|
-
</span><span class="inferred0"><a name="line159"></a>159
|
760
|
-
</span><span class="marked1"><a name="line160"></a>160 alias class_has add_class_attribute
|
761
|
-
</span><span class="inferred0"><a name="line161"></a>161 end
|
762
|
-
</span><span class="inferred1"><a name="line162"></a>162
|
763
|
-
</span><span class="inferred0"><a name="line163"></a>163 # alias for lazy people.
|
764
|
-
</span><span class="marked1"><a name="line164"></a>164 CAttrs = ClassAttributes
|
765
|
-
</span><span class="inferred0"><a name="line165"></a>165 end
|
766
|
-
</span></pre><hr/>
|
767
|
-
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
768
|
-
version 0.8.1.2.</p>
|
769
|
-
<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'/>
|
770
|
-
</a>
|
771
|
-
<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'/>
|
772
|
-
</a>
|
773
|
-
</p>
|
774
|
-
</body>
|
775
|
-
</html>
|