classx 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/README +39 -0
- data/Rakefile +52 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-block_rb.html +661 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-callbacks_rb.html +932 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-change_rb.html +779 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-hunk_rb.html +867 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs_rb.html +1715 -0
- data/doc/output/coverage/-Library-Ruby-Gems-gems-rcov-0_8_1_2_0-lib-rcov_rb.html +1598 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-drb_rb.html +2373 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-eq_rb.html +626 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-invokemethod_rb.html +646 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-forwardable_rb.html +828 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-pp_rb.html +1257 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-prettyprint_rb.html +1506 -0
- data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-timeout_rb.html +715 -0
- data/doc/output/coverage/index.html +603 -0
- data/doc/output/coverage/lib-classx-validate_rb.html +645 -0
- data/doc/output/coverage/lib-classx_rb.html +752 -0
- data/lib/classx.rb +142 -0
- data/lib/classx.rb.new +102 -0
- data/lib/classx/attributes.rb +13 -0
- data/lib/classx/commandable.rb +8 -0
- data/lib/classx/validate.rb +35 -0
- data/spec/classx_spec.rb +261 -0
- data/spec/classx_validate_spec.rb +40 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +4 -0
- data/tasks/basic_config.rake +22 -0
- data/tasks/basic_tasks.rake +139 -0
- metadata +107 -0
@@ -0,0 +1,752 @@
|
|
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.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 Wed May 28 01:22:16 +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_rb.html'>lib/classx.rb</a>
|
573
|
+
</td>
|
574
|
+
<td class='lines_total'><tt>142</tt>
|
575
|
+
</td>
|
576
|
+
<td class='lines_code'><tt>117</tt>
|
577
|
+
</td>
|
578
|
+
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>97.2%</tt>
|
579
|
+
</td>
|
580
|
+
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='97'/>
|
581
|
+
<td class='uncovered' width='3'/>
|
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'>96.6%</tt>
|
589
|
+
</td>
|
590
|
+
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='97'/>
|
591
|
+
<td class='uncovered' width='3'/>
|
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="marked1"><a name="line2"></a> 2 class ClassX
|
603
|
+
</span><span class="marked0"><a name="line3"></a> 3 class AttrRequiredError < Exception; end
|
604
|
+
</span><span class="marked1"><a name="line4"></a> 4 class InvalidAttrArgument < Exception; end
|
605
|
+
</span><span class="marked0"><a name="line5"></a> 5 class LazyOptionShouldHaveDefault < Exception; end
|
606
|
+
</span><span class="marked1"><a name="line6"></a> 6 class OptionalAttrShouldBeWritable < Exception; end
|
607
|
+
</span><span class="marked0"><a name="line7"></a> 7 class RequiredAttrShouldNotHaveDefault < Exception; end
|
608
|
+
</span><span class="marked1"><a name="line8"></a> 8 class <<self
|
609
|
+
</span><span class="marked0"><a name="line9"></a> 9 def has name, attrs={}
|
610
|
+
</span><span class="marked1"><a name="line10"></a> 10 name = name.to_s
|
611
|
+
</span><span class="inferred0"><a name="line11"></a> 11
|
612
|
+
</span><span class="marked1"><a name="line12"></a> 12 setter_definition = ''
|
613
|
+
</span><span class="marked0"><a name="line13"></a> 13 if !attrs[:respond_to].nil?
|
614
|
+
</span><span class="uncovered1"><a name="line14"></a> 14 setter_definition += <<-END_OF_RESPOND_TO
|
615
|
+
</span><span class="uncovered0"><a name="line15"></a> 15 raise InvalidAttrArgument, "param :#{name}'s value \#{val.inspect} should respond_to #{attrs[:respond_to]}}" unless val.respond_to? #{attrs[:respond_to]}
|
616
|
+
</span><span class="uncovered1"><a name="line16"></a> 16 END_OF_RESPOND_TO
|
617
|
+
</span><span class="uncovered0"><a name="line17"></a> 17 end
|
618
|
+
</span><span class="marked1"><a name="line18"></a> 18 if !attrs[:kind_of].nil?
|
619
|
+
</span><span class="marked0"><a name="line19"></a> 19 setter_definition += <<-END_OF_KIND_OF
|
620
|
+
</span><span class="inferred1"><a name="line20"></a> 20 raise InvalidAttrArgument, "param :#{name}'s value \#{val.inspect} should kind_of #{attrs[:kind_of]}" unless val.kind_of? #{attrs[:kind_of]}
|
621
|
+
</span><span class="inferred0"><a name="line21"></a> 21 END_OF_KIND_OF
|
622
|
+
</span><span class="inferred1"><a name="line22"></a> 22 end
|
623
|
+
</span><span class="inferred0"><a name="line23"></a> 23
|
624
|
+
</span><span class="marked1"><a name="line24"></a> 24 self.class_eval <<-END_OF_ACCESSOR
|
625
|
+
</span><span class="inferred0"><a name="line25"></a> 25 attr_reader "#{name}"
|
626
|
+
</span><span class="inferred1"><a name="line26"></a> 26
|
627
|
+
</span><span class="inferred0"><a name="line27"></a> 27 def #{name}= val
|
628
|
+
</span><span class="inferred1"><a name="line28"></a> 28 #{setter_definition}
|
629
|
+
</span><span class="inferred0"><a name="line29"></a> 29 @#{name} = val
|
630
|
+
</span><span class="inferred1"><a name="line30"></a> 30 end
|
631
|
+
</span><span class="inferred0"><a name="line31"></a> 31 END_OF_ACCESSOR
|
632
|
+
</span><span class="inferred1"><a name="line32"></a> 32
|
633
|
+
</span><span class="marked0"><a name="line33"></a> 33 if attrs[:default].nil?
|
634
|
+
</span><span class="marked1"><a name="line34"></a> 34 raise LazyOptionShouldHaveDefault, "in :#{name}: :lazy option need specifying :default" if attrs[:lazy]
|
635
|
+
</span><span class="inferred0"><a name="line35"></a> 35 else
|
636
|
+
</span><span class="inferred1"><a name="line36"></a> 36 # when you specify :optional to false explicitly, raise Error.
|
637
|
+
</span><span class="marked0"><a name="line37"></a> 37 if attrs[:optional].nil?
|
638
|
+
</span><span class="marked1"><a name="line38"></a> 38 attrs[:optional] = true
|
639
|
+
</span><span class="inferred0"><a name="line39"></a> 39 end
|
640
|
+
</span><span class="marked1"><a name="line40"></a> 40 raise RequiredAttrShouldNotHaveDefault, "in :#{name}: required attribute should not have :default option" unless attrs[:optional]
|
641
|
+
</span><span class="marked0"><a name="line41"></a> 41 case attrs[:default]
|
642
|
+
</span><span class="marked1"><a name="line42"></a> 42 when Proc
|
643
|
+
</span><span class="marked0"><a name="line43"></a> 43 register_attr_default_value_proc name, &attrs[:default]
|
644
|
+
</span><span class="inferred1"><a name="line44"></a> 44 else
|
645
|
+
</span><span class="marked0"><a name="line45"></a> 45 register_attr_default_value name, attrs[:default]
|
646
|
+
</span><span class="inferred1"><a name="line46"></a> 46 end
|
647
|
+
</span><span class="inferred0"><a name="line47"></a> 47 end
|
648
|
+
</span><span class="inferred1"><a name="line48"></a> 48
|
649
|
+
</span><span class="marked0"><a name="line49"></a> 49 if attrs[:optional]
|
650
|
+
</span><span class="marked1"><a name="line50"></a> 50 if attrs[:writable].nil?
|
651
|
+
</span><span class="marked0"><a name="line51"></a> 51 attrs[:writable] = true
|
652
|
+
</span><span class="inferred1"><a name="line52"></a> 52 else
|
653
|
+
</span><span class="marked0"><a name="line53"></a> 53 raise OptionalAttrShouldBeWritable unless attrs[:writable]
|
654
|
+
</span><span class="inferred1"><a name="line54"></a> 54 end
|
655
|
+
</span><span class="inferred0"><a name="line55"></a> 55 else
|
656
|
+
</span><span class="marked1"><a name="line56"></a> 56 register_attr_required name
|
657
|
+
</span><span class="inferred0"><a name="line57"></a> 57 end
|
658
|
+
</span><span class="inferred1"><a name="line58"></a> 58
|
659
|
+
</span><span class="marked0"><a name="line59"></a> 59 unless attrs[:writable]
|
660
|
+
</span><span class="marked1"><a name="line60"></a> 60 __send__ :private,"#{name}="
|
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="inferred0"><a name="line63"></a> 63 end
|
664
|
+
</span><span class="inferred1"><a name="line64"></a> 64
|
665
|
+
</span><span class="marked0"><a name="line65"></a> 65 def register_attr_default_value name, value
|
666
|
+
</span><span class="marked1"><a name="line66"></a> 66 self.class_eval do
|
667
|
+
</span><span class="marked0"><a name="line67"></a> 67 define_method "set_attr_default_value_of[#{name}]" do
|
668
|
+
</span><span class="marked1"><a name="line68"></a> 68 self.__send__ "#{name}=", value
|
669
|
+
</span><span class="inferred0"><a name="line69"></a> 69 end
|
670
|
+
</span><span class="inferred1"><a name="line70"></a> 70
|
671
|
+
</span><span class="marked0"><a name="line71"></a> 71 private "set_attr_default_value_of[#{name}]"
|
672
|
+
</span><span class="inferred1"><a name="line72"></a> 72 end
|
673
|
+
</span><span class="marked0"><a name="line73"></a> 73 end
|
674
|
+
</span><span class="inferred1"><a name="line74"></a> 74
|
675
|
+
</span><span class="marked0"><a name="line75"></a> 75 def register_attr_default_value_proc name, &block
|
676
|
+
</span><span class="marked1"><a name="line76"></a> 76 self.class_eval do
|
677
|
+
</span><span class="marked0"><a name="line77"></a> 77 define_method "set_attr_default_value_of[#{name}]" do
|
678
|
+
</span><span class="marked1"><a name="line78"></a> 78 self.__send__ "#{name}=", block.call(self)
|
679
|
+
</span><span class="inferred0"><a name="line79"></a> 79 end
|
680
|
+
</span><span class="inferred1"><a name="line80"></a> 80
|
681
|
+
</span><span class="marked0"><a name="line81"></a> 81 private "set_attr_default_value_of[#{name}]"
|
682
|
+
</span><span class="inferred1"><a name="line82"></a> 82 end
|
683
|
+
</span><span class="inferred0"><a name="line83"></a> 83 end
|
684
|
+
</span><span class="inferred1"><a name="line84"></a> 84
|
685
|
+
</span><span class="marked0"><a name="line85"></a> 85 def register_attr_required name
|
686
|
+
</span><span class="marked1"><a name="line86"></a> 86 define_method "attr_required[#{name}]" do
|
687
|
+
</span><span class="inferred0"><a name="line87"></a> 87 end
|
688
|
+
</span><span class="inferred1"><a name="line88"></a> 88
|
689
|
+
</span><span class="marked0"><a name="line89"></a> 89 private "attr_required[#{name}]"
|
690
|
+
</span><span class="inferred1"><a name="line90"></a> 90 end
|
691
|
+
</span><span class="inferred0"><a name="line91"></a> 91
|
692
|
+
</span><span class="marked1"><a name="line92"></a> 92 ATTR_REGEX = /^([^=]*?)=$/
|
693
|
+
</span><span class="marked0"><a name="line93"></a> 93 def attributes
|
694
|
+
</span><span class="marked1"><a name="line94"></a> 94 ( public_instance_methods + private_instance_methods ).select {|meth|
|
695
|
+
</span><span class="marked0"><a name="line95"></a> 95 meth.to_s =~ ATTR_REGEX
|
696
|
+
</span><span class="inferred1"><a name="line96"></a> 96 }.map {|item|
|
697
|
+
</span><span class="marked0"><a name="line97"></a> 97 item.to_s.sub(ATTR_REGEX) { $1 }
|
698
|
+
</span><span class="inferred1"><a name="line98"></a> 98 }
|
699
|
+
</span><span class="marked0"><a name="line99"></a> 99 end
|
700
|
+
</span><span class="inferred1"><a name="line100"></a>100
|
701
|
+
</span><span class="marked0"><a name="line101"></a>101 ATTR_REQUIRED_REGEX = /^attr_required\[(.*?)\]/
|
702
|
+
</span><span class="marked1"><a name="line102"></a>102 def required_attributes
|
703
|
+
</span><span class="marked0"><a name="line103"></a>103 private_instance_methods.select {|meth|
|
704
|
+
</span><span class="marked1"><a name="line104"></a>104 meth.to_s =~ ATTR_REQUIRED_REGEX
|
705
|
+
</span><span class="inferred0"><a name="line105"></a>105 }.map {|item|
|
706
|
+
</span><span class="marked1"><a name="line106"></a>106 item.sub(ATTR_REQUIRED_REGEX) { $1 }
|
707
|
+
</span><span class="inferred0"><a name="line107"></a>107 }
|
708
|
+
</span><span class="marked1"><a name="line108"></a>108 end
|
709
|
+
</span><span class="inferred0"><a name="line109"></a>109 end
|
710
|
+
</span><span class="inferred1"><a name="line110"></a>110
|
711
|
+
</span><span class="marked0"><a name="line111"></a>111 def initialize hash={}
|
712
|
+
</span><span class="marked1"><a name="line112"></a>112 before_init hash
|
713
|
+
</span><span class="inferred0"><a name="line113"></a>113
|
714
|
+
</span><span class="marked1"><a name="line114"></a>114 unless hash && hash.kind_of?(Hash)
|
715
|
+
</span><span class="marked0"><a name="line115"></a>115 raise ArgumentError, "#{hash.inspect} was wrong as arguments. please specify kind of Hash instance"
|
716
|
+
</span><span class="inferred1"><a name="line116"></a>116 end
|
717
|
+
</span><span class="inferred0"><a name="line117"></a>117
|
718
|
+
</span><span class="marked1"><a name="line118"></a>118 hash = hash.inject({}) {|h,item| h[item.first.to_s] = item.last; h } # allow String or Symbol for key
|
719
|
+
</span><span class="marked0"><a name="line119"></a>119 self.class.required_attributes.each do |name|
|
720
|
+
</span><span class="marked1"><a name="line120"></a>120 raise AttrRequiredError, "param :#{name} is required to #{hash.inspect}" unless hash.keys.include?(name)
|
721
|
+
</span><span class="inferred0"><a name="line121"></a>121 end
|
722
|
+
</span><span class="marked1"><a name="line122"></a>122 hash.each do |key,val|
|
723
|
+
</span><span class="marked0"><a name="line123"></a>123 if respond_to? "#{key}=", true
|
724
|
+
</span><span class="marked1"><a name="line124"></a>124 __send__ "#{key}=", val
|
725
|
+
</span><span class="inferred0"><a name="line125"></a>125 end
|
726
|
+
</span><span class="inferred1"><a name="line126"></a>126 end
|
727
|
+
</span><span class="marked0"><a name="line127"></a>127 private_methods.select do |meth|
|
728
|
+
</span><span class="marked1"><a name="line128"></a>128 meth.to_s =~ /^set_attr_default_value_of\[(.*?)\]$/
|
729
|
+
</span><span class="inferred0"><a name="line129"></a>129 end.each do |meth|
|
730
|
+
</span><span class="marked1"><a name="line130"></a>130 __send__ meth
|
731
|
+
</span><span class="inferred0"><a name="line131"></a>131 end
|
732
|
+
</span><span class="marked1"><a name="line132"></a>132 after_init
|
733
|
+
</span><span class="inferred0"><a name="line133"></a>133 end
|
734
|
+
</span><span class="inferred1"><a name="line134"></a>134
|
735
|
+
</span><span class="inferred0"><a name="line135"></a>135 # just extend point
|
736
|
+
</span><span class="marked1"><a name="line136"></a>136 def before_init hash
|
737
|
+
</span><span class="marked0"><a name="line137"></a>137 end
|
738
|
+
</span><span class="inferred1"><a name="line138"></a>138
|
739
|
+
</span><span class="marked0"><a name="line139"></a>139 def after_init
|
740
|
+
</span><span class="marked1"><a name="line140"></a>140 end
|
741
|
+
</span><span class="inferred0"><a name="line141"></a>141
|
742
|
+
</span><span class="inferred1"><a name="line142"></a>142 end
|
743
|
+
</span></pre><hr/>
|
744
|
+
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
745
|
+
version 0.8.1.2.</p>
|
746
|
+
<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'/>
|
747
|
+
</a>
|
748
|
+
<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'/>
|
749
|
+
</a>
|
750
|
+
</p>
|
751
|
+
</body>
|
752
|
+
</html>
|