classx 0.0.4 → 0.0.5

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.
@@ -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>