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.
- data/ChangeLog +114 -0
- data/Rakefile +2 -2
- data/bench/attribute_set.rb +10 -0
- data/bench/define_attribute.rb +18 -0
- data/bench/initialize.rb +8 -0
- data/example/commandable.rb +3 -3
- data/lib/classx.rb +17 -12
- data/lib/classx/attribute.rb +34 -5
- data/lib/classx/attributes.rb +10 -6
- data/lib/classx/commandable.rb +2 -2
- data/lib/classx/role/logger.rb +42 -10
- data/spec/classx/handles_spec.rb +13 -2
- data/spec/classx/with_coerce_spec.rb +20 -0
- data/spec/classx/with_trigger_spec.rb +61 -0
- data/spec/classx_class_attributes/with_coerce_spec.rb +35 -8
- data/spec/classx_class_attributes/with_trigger_spec.rb +59 -0
- data/tasks/basic_config.rake +1 -0
- metadata +18 -16
- data/doc/output/coverage/index.html +0 -414
- data/doc/output/coverage/lib-classx-attribute_rb.html +0 -896
- data/doc/output/coverage/lib-classx-attributes_rb.html +0 -768
- 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 -650
- data/doc/output/coverage/lib-classx_rb.html +0 -815
data/spec/classx/handles_spec.rb
CHANGED
|
@@ -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
|
data/tasks/basic_config.rake
CHANGED
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
|
+
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-
|
|
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
|
|
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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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
|
-
</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>
|