classx 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,8 @@ describe ClassX do
10
10
  include ClassX
11
11
  has :x, :handles => {
12
12
  :x_inspect => :inspect,
13
- :x_slice => :slice
13
+ :x_slice => :slice,
14
+ :x_map => :map
14
15
  }
15
16
  end
16
17
  end
@@ -30,6 +31,11 @@ describe ClassX do
30
31
  obj.push 1
31
32
  @class1.new(:x => obj).x_slice(0).should == obj.slice(0)
32
33
  end
34
+
35
+ it 'should delegate method with block' do
36
+ obj = [1, 2, 3]
37
+ @class1.new(:x => obj).x_map {|i| i * 2 }.should == [2, 4, 6]
38
+ end
33
39
  end
34
40
 
35
41
  describe 'with handles option as Array' do
@@ -38,7 +44,7 @@ describe ClassX do
38
44
  @class1.class_eval do
39
45
  include ClassX
40
46
 
41
- has :x, :handles => [ :length, :slice ]
47
+ has :x, :handles => [ :length, :slice, :map ]
42
48
  end
43
49
  end
44
50
 
@@ -57,6 +63,11 @@ describe ClassX do
57
63
  obj.push 1
58
64
  @class1.new(:x => obj).slice(0).should == obj.slice(0)
59
65
  end
66
+
67
+ it 'should delegate method with block' do
68
+ obj = [1, 2, 3]
69
+ @class1.new(:x => obj).map {|i| i * 2 }.should == [2, 4, 6]
70
+ end
60
71
  end
61
72
  end
62
73
  end
@@ -26,6 +26,26 @@ describe ClassX do
26
26
  end
27
27
  end
28
28
 
29
+ describe 'when Proc is value' do
30
+ before do
31
+ @class = Class.new
32
+ @class.class_eval do
33
+ include ClassX
34
+
35
+ has :x, :isa => Integer, :coerce => proc {|val| ( val.respond_to?(:to_i) && val.to_i > 0 ) ? val.to_i : val }
36
+ end
37
+ end
38
+
39
+ it 'attrubute :x should convert Str to Integer' do
40
+ lambda { @class.new(:x => "10") }.should_not raise_error(Exception)
41
+ @class.new(:x => "10").x.should == 10
42
+ end
43
+
44
+ it 'attrubute :x should not convert Object to Integer' do
45
+ lambda { @class.new(:x => Object.new ) }.should raise_error(ClassX::InvalidAttrArgument)
46
+ end
47
+ end
48
+
29
49
  describe 'when Proc is key' do
30
50
  before do
31
51
  @class = Class.new
@@ -0,0 +1,61 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+ require 'classx'
3
+
4
+ describe ClassX do
5
+ describe '#has' do
6
+ describe 'with :trigger is Proc' do
7
+ before do
8
+ @class = Class.new
9
+ @class.class_eval do
10
+ include ClassX
11
+ has :x,
12
+ :writable => true,
13
+ :trigger => proc {|mine,val| mine.y = val }
14
+
15
+ has :y,
16
+ :writable => true
17
+
18
+ end
19
+ end
20
+
21
+ it 'should be called when setting value' do
22
+ obj = @class.new(:x => 10)
23
+ obj.x = 20
24
+ obj.y.should == 20
25
+ end
26
+ end
27
+
28
+ describe 'with :trigger is Array' do
29
+ before do
30
+ @class = Class.new
31
+ @class.class_eval do
32
+ include ClassX
33
+ has :x,
34
+ :writable => true,
35
+ :trigger => [ proc {|mine,val| mine.y = val }, proc {|mine, val| mine.z = val } ]
36
+
37
+ has :y,
38
+ :writable => true
39
+
40
+ has :z,
41
+ :writable => true
42
+
43
+ end
44
+ end
45
+
46
+ it 'should call each trigger when setting value' do
47
+ obj = @class.new(:x => 10)
48
+ obj.x = 20
49
+ obj.y.should == 20
50
+ obj.z.should == 20
51
+ end
52
+
53
+ it 'should be able add trigger after define attribute' do
54
+ @class.attribute_of["x"].config[:trigger].push( proc {|mine, val| raise ClassX::InvalidAttrArgument} )
55
+ lambda {
56
+ obj = @class.new(:x => 10)
57
+ }.should raise_error(ClassX::InvalidAttrArgument)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -18,7 +18,7 @@ describe ClassX::ClassAttributes do
18
18
  end
19
19
 
20
20
  it 'attrubute :x should convert Str to Integer' do
21
- lambda {
21
+ lambda {
22
22
  @class.class_eval do
23
23
  self.x = "10"
24
24
  end
@@ -26,7 +26,7 @@ describe ClassX::ClassAttributes do
26
26
  end
27
27
 
28
28
  it 'attrubute :x should not convert Object to Integer' do
29
- lambda {
29
+ lambda {
30
30
  @class.class_eval do
31
31
  self.x = Object.new
32
32
  end
@@ -34,6 +34,33 @@ describe ClassX::ClassAttributes do
34
34
  end
35
35
  end
36
36
 
37
+ describe 'when Proc is value' do
38
+ before do
39
+ @class = Class.new
40
+ @class.class_eval do
41
+ extend ClassX::ClassAttributes
42
+
43
+ class_has :x, :isa => Integer, :coerce => proc {|val| ( val.respond_to?(:to_i) && val.to_i > 0 ) ? val.to_i : val }
44
+ end
45
+ end
46
+
47
+ it 'attrubute :x should convert Str to Integer' do
48
+ lambda {
49
+ @class.class_eval do
50
+ self.x = 10
51
+ end
52
+ }.should_not raise_error(Exception)
53
+ @class.x.should == 10
54
+ end
55
+
56
+ it 'attrubute :x should not convert Object to Integer' do
57
+ lambda {
58
+ @class.class_eval do
59
+ self.x = Object.new
60
+ end
61
+ }.should raise_error(ClassX::InvalidAttrArgument)
62
+ end
63
+ end
37
64
  describe 'when Proc is key' do
38
65
  before do
39
66
  @class = Class.new
@@ -45,7 +72,7 @@ describe ClassX::ClassAttributes do
45
72
  end
46
73
 
47
74
  it 'attrubute :x should convert Str to Integer' do
48
- lambda {
75
+ lambda {
49
76
  @class.class_eval do
50
77
  self.x = "10"
51
78
  end
@@ -53,7 +80,7 @@ describe ClassX::ClassAttributes do
53
80
  end
54
81
 
55
82
  it 'attrubute :x should not convert Object to Integer' do
56
- lambda {
83
+ lambda {
57
84
  @class.class_eval do
58
85
  self.x = Object.new
59
86
  end
@@ -72,7 +99,7 @@ describe ClassX::ClassAttributes do
72
99
  end
73
100
 
74
101
  it 'attrubute :x should convert Str to Integer' do
75
- lambda {
102
+ lambda {
76
103
  @class.class_eval do
77
104
  self.x = 10
78
105
  end
@@ -80,7 +107,7 @@ describe ClassX::ClassAttributes do
80
107
  end
81
108
 
82
109
  it 'attrubute :x should not convert Object to Integer' do
83
- lambda {
110
+ lambda {
84
111
  @class.class_eval do
85
112
  self.x = Object.new
86
113
  end
@@ -99,7 +126,7 @@ describe ClassX::ClassAttributes do
99
126
  end
100
127
 
101
128
  it 'attrubute :x should convert Str to Integer' do
102
- lambda {
129
+ lambda {
103
130
  @class.class_eval do
104
131
  self.x = 10
105
132
  end
@@ -107,7 +134,7 @@ describe ClassX::ClassAttributes do
107
134
  end
108
135
 
109
136
  it 'attrubute :x should not convert Object to Integer' do
110
- lambda {
137
+ lambda {
111
138
  @class.class_eval do
112
139
  self.x = Object.new
113
140
  end
@@ -0,0 +1,59 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+ require 'classx'
3
+
4
+ describe ClassX do
5
+ describe '#class_has' do
6
+ describe 'with :trigger is Proc' do
7
+ before do
8
+ @class = Class.new
9
+ @class.class_eval do
10
+ extend ClassX::CAttrs
11
+ class_has :x,
12
+ :writable => true,
13
+ :trigger => proc {|mine,val| mine.y = val }
14
+
15
+ class_has :y,
16
+ :writable => true
17
+
18
+ end
19
+ end
20
+
21
+ it 'should be called when setting value' do
22
+ @class.x = 20
23
+ @class.y.should == 20
24
+ end
25
+ end
26
+
27
+ describe 'with :trigger is Array' do
28
+ before do
29
+ @class = Class.new
30
+ @class.class_eval do
31
+ extend ClassX::CAttrs
32
+ class_has :x,
33
+ :writable => true,
34
+ :trigger => [ proc {|mine,val| mine.y = val }, proc {|mine, val| mine.z = val } ]
35
+
36
+ class_has :y,
37
+ :writable => true
38
+
39
+ class_has :z,
40
+ :writable => true
41
+
42
+ end
43
+ end
44
+
45
+ it 'should call each trrigger when setting value' do
46
+ @class.x = 20
47
+ @class.y.should == 20
48
+ @class.z.should == 20
49
+ end
50
+
51
+ it 'should be able add trigger after define attribute' do
52
+ @class.class_attribute_of["x"].class.config[:trigger].push( proc {|mine, val| raise ClassX::InvalidAttrArgument} )
53
+ lambda {
54
+ @class.x = 10
55
+ }.should raise_error(ClassX::InvalidAttrArgument)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -9,6 +9,7 @@ RDOC_OPTS = [
9
9
  "--line-numbers",
10
10
  "--main", "README",
11
11
  "--inline-source",
12
+ "--accessor", "has=rw",
12
13
  '--exclude', '^(example|extras)/'
13
14
  ]
14
15
  DEFAULT_EXTRA_RDOC_FILES = ['README', 'ChangeLog']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: classx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiji, Yoshimi
@@ -9,10 +9,19 @@ autorequire: ""
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-13 00:00:00 +09:00
12
+ date: 2008-10-27 00:00:00 +09:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.4
24
+ version:
16
25
  description: Meta Framework extending and flexible attribute like Moose ( perl )
17
26
  email: walf443 at gmail.com
18
27
  executables: []
@@ -45,6 +54,7 @@ files:
45
54
  - spec/classx/with_extend_spec.rb
46
55
  - spec/classx/with_include_spec.rb
47
56
  - spec/classx/with_multiple_class_spec.rb
57
+ - spec/classx/with_trigger_spec.rb
48
58
  - spec/classx/with_validate_spec.rb
49
59
  - spec/classx/without_accessor_spec.rb
50
60
  - spec/classx/without_anyoption_spec.rb
@@ -59,6 +69,7 @@ files:
59
69
  - spec/classx_class_attributes/with_extend_spec.rb
60
70
  - spec/classx_class_attributes/with_include_spec.rb
61
71
  - spec/classx_class_attributes/with_multiple_class_spec.rb
72
+ - spec/classx_class_attributes/with_trigger_spec.rb
62
73
  - spec/classx_class_attributes/with_validate_spec.rb
63
74
  - spec/classx_class_attributes/without_accessor_spec.rb
64
75
  - spec/classx_class_attributes/without_anyoption_spec.rb
@@ -67,17 +78,6 @@ files:
67
78
  - spec/classx_validate_spec.rb
68
79
  - spec/spec.opts
69
80
  - spec/spec_helper.rb
70
- - doc/output
71
- - doc/output/coverage
72
- - doc/output/coverage/index.html
73
- - doc/output/coverage/lib-classx-attribute_rb.html
74
- - doc/output/coverage/lib-classx-attributes_rb.html
75
- - doc/output/coverage/lib-classx-bracketable_rb.html
76
- - doc/output/coverage/lib-classx-class_attributes_rb.html
77
- - doc/output/coverage/lib-classx-commandable_rb.html
78
- - doc/output/coverage/lib-classx-declare_rb.html
79
- - doc/output/coverage/lib-classx-validate_rb.html
80
- - doc/output/coverage/lib-classx_rb.html
81
81
  - bench/attribute_get.rb
82
82
  - bench/attribute_set.rb
83
83
  - bench/define_attribute.rb
@@ -97,6 +97,8 @@ rdoc_options:
97
97
  - --main
98
98
  - README
99
99
  - --inline-source
100
+ - --accessor
101
+ - has=rw
100
102
  - --exclude
101
103
  - ^(example|extras)/
102
104
  - --title
@@ -118,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
120
  requirements: []
119
121
 
120
122
  rubyforge_project: akasakarb
121
- rubygems_version: 1.0.1
123
+ rubygems_version: 1.2.0
122
124
  signing_key:
123
125
  specification_version: 2
124
126
  summary: Meta Framework extending and flexible attribute like Moose ( perl )
@@ -1,414 +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>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
- </head>
150
- <body><h3>C0 code coverage information</h3>
151
- <p>Generated on Sat Sep 13 00:31:28 +0900 2008 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
152
- </p>
153
- <hr/>
154
- <table class='report'><thead><tr><td class='heading'>Name</td>
155
- <td class='heading'>Total lines</td>
156
- <td class='heading'>Lines of code</td>
157
- <td class='heading'>Total coverage</td>
158
- <td class='heading'>Code coverage</td>
159
- </tr>
160
- </thead>
161
- <tbody><tr class='light'><td>TOTAL</td>
162
- <td class='lines_total'><tt>1081</tt>
163
- </td>
164
- <td class='lines_code'><tt>700</tt>
165
- </td>
166
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>92.2%</tt>
167
- &nbsp;</td>
168
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='92'/>
169
- <td class='uncovered' width='8'/>
170
- </tr>
171
- </table>
172
- </td>
173
- </tr>
174
- </table>
175
- </td>
176
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>88.7%</tt>
177
- &nbsp;</td>
178
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='89'/>
179
- <td class='uncovered' width='11'/>
180
- </tr>
181
- </table>
182
- </td>
183
- </tr>
184
- </table>
185
- </td>
186
- </tr>
187
- <tr class='dark'><td><a href='lib-classx_rb.html'>lib/classx.rb</a>
188
- </td>
189
- <td class='lines_total'><tt>205</tt>
190
- </td>
191
- <td class='lines_code'><tt>130</tt>
192
- </td>
193
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
194
- &nbsp;</td>
195
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
196
- <td class='uncovered' width='0'/>
197
- </tr>
198
- </table>
199
- </td>
200
- </tr>
201
- </table>
202
- </td>
203
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
204
- &nbsp;</td>
205
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
206
- <td class='uncovered' width='0'/>
207
- </tr>
208
- </table>
209
- </td>
210
- </tr>
211
- </table>
212
- </td>
213
- </tr>
214
- <tr class='light'><td><a href='lib-classx-attribute_rb.html'>lib/classx/attribute.rb</a>
215
- </td>
216
- <td class='lines_total'><tt>286</tt>
217
- </td>
218
- <td class='lines_code'><tt>221</tt>
219
- </td>
220
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>98.6%</tt>
221
- &nbsp;</td>
222
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='99'/>
223
- <td class='uncovered' width='1'/>
224
- </tr>
225
- </table>
226
- </td>
227
- </tr>
228
- </table>
229
- </td>
230
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>98.2%</tt>
231
- &nbsp;</td>
232
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='98'/>
233
- <td class='uncovered' width='2'/>
234
- </tr>
235
- </table>
236
- </td>
237
- </tr>
238
- </table>
239
- </td>
240
- </tr>
241
- <tr class='dark'><td><a href='lib-classx-attributes_rb.html'>lib/classx/attributes.rb</a>
242
- </td>
243
- <td class='lines_total'><tt>158</tt>
244
- </td>
245
- <td class='lines_code'><tt>94</tt>
246
- </td>
247
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
248
- &nbsp;</td>
249
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
250
- <td class='uncovered' width='0'/>
251
- </tr>
252
- </table>
253
- </td>
254
- </tr>
255
- </table>
256
- </td>
257
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
258
- &nbsp;</td>
259
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
260
- <td class='uncovered' width='0'/>
261
- </tr>
262
- </table>
263
- </td>
264
- </tr>
265
- </table>
266
- </td>
267
- </tr>
268
- <tr class='light'><td><a href='lib-classx-bracketable_rb.html'>lib/classx/bracketable.rb</a>
269
- </td>
270
- <td class='lines_total'><tt>61</tt>
271
- </td>
272
- <td class='lines_code'><tt>34</tt>
273
- </td>
274
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
275
- &nbsp;</td>
276
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
277
- <td class='uncovered' width='0'/>
278
- </tr>
279
- </table>
280
- </td>
281
- </tr>
282
- </table>
283
- </td>
284
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
285
- &nbsp;</td>
286
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
287
- <td class='uncovered' width='0'/>
288
- </tr>
289
- </table>
290
- </td>
291
- </tr>
292
- </table>
293
- </td>
294
- </tr>
295
- <tr class='dark'><td><a href='lib-classx-class_attributes_rb.html'>lib/classx/class_attributes.rb</a>
296
- </td>
297
- <td class='lines_total'><tt>165</tt>
298
- </td>
299
- <td class='lines_code'><tt>108</tt>
300
- </td>
301
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>95.2%</tt>
302
- &nbsp;</td>
303
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='95'/>
304
- <td class='uncovered' width='5'/>
305
- </tr>
306
- </table>
307
- </td>
308
- </tr>
309
- </table>
310
- </td>
311
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>92.6%</tt>
312
- &nbsp;</td>
313
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='93'/>
314
- <td class='uncovered' width='7'/>
315
- </tr>
316
- </table>
317
- </td>
318
- </tr>
319
- </table>
320
- </td>
321
- </tr>
322
- <tr class='light'><td><a href='lib-classx-commandable_rb.html'>lib/classx/commandable.rb</a>
323
- </td>
324
- <td class='lines_total'><tt>117</tt>
325
- </td>
326
- <td class='lines_code'><tt>70</tt>
327
- </td>
328
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>41.0%</tt>
329
- &nbsp;</td>
330
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='41'/>
331
- <td class='uncovered' width='59'/>
332
- </tr>
333
- </table>
334
- </td>
335
- </tr>
336
- </table>
337
- </td>
338
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>8.6%</tt>
339
- &nbsp;</td>
340
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='9'/>
341
- <td class='uncovered' width='91'/>
342
- </tr>
343
- </table>
344
- </td>
345
- </tr>
346
- </table>
347
- </td>
348
- </tr>
349
- <tr class='dark'><td><a href='lib-classx-declare_rb.html'>lib/classx/declare.rb</a>
350
- </td>
351
- <td class='lines_total'><tt>49</tt>
352
- </td>
353
- <td class='lines_code'><tt>26</tt>
354
- </td>
355
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>93.9%</tt>
356
- &nbsp;</td>
357
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='94'/>
358
- <td class='uncovered' width='6'/>
359
- </tr>
360
- </table>
361
- </td>
362
- </tr>
363
- </table>
364
- </td>
365
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>88.5%</tt>
366
- &nbsp;</td>
367
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='88'/>
368
- <td class='uncovered' width='12'/>
369
- </tr>
370
- </table>
371
- </td>
372
- </tr>
373
- </table>
374
- </td>
375
- </tr>
376
- <tr class='light'><td><a href='lib-classx-validate_rb.html'>lib/classx/validate.rb</a>
377
- </td>
378
- <td class='lines_total'><tt>40</tt>
379
- </td>
380
- <td class='lines_code'><tt>17</tt>
381
- </td>
382
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>100.0%</tt>
383
- &nbsp;</td>
384
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
385
- <td class='uncovered' width='0'/>
386
- </tr>
387
- </table>
388
- </td>
389
- </tr>
390
- </table>
391
- </td>
392
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>100.0%</tt>
393
- &nbsp;</td>
394
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='100'/>
395
- <td class='uncovered' width='0'/>
396
- </tr>
397
- </table>
398
- </td>
399
- </tr>
400
- </table>
401
- </td>
402
- </tr>
403
- </tbody>
404
- </table>
405
- <hr/>
406
- <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
407
- version 0.8.1.2.</p>
408
- <p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml11' height='31' alt='Valid XHTML 1.1!' width='88'/>
409
- </a>
410
- <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'/>
411
- </a>
412
- </p>
413
- </body>
414
- </html>