ccp 0.1.3 → 0.1.4
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/README.rdoc +3 -3
- data/lib/ccp/invokers/base.rb +4 -15
- data/lib/ccp/receivers/profileable.rb +2 -2
- data/lib/ccp/version.rb +1 -1
- data/spec/commands_composite_spec.rb +26 -26
- data/spec/commands_core_spec.rb +2 -2
- data/spec/invokers_spec.rb +34 -34
- data/spec/models.rb +11 -10
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -64,8 +64,8 @@ It is too hard to see data dependencies especially about instance variables.
|
|
64
64
|
class FetchData # 1. SRP
|
65
65
|
include Ccp::Commands::Core
|
66
66
|
|
67
|
-
# {
|
68
|
-
def
|
67
|
+
# {before,after} methods can be used like Design By Contract
|
68
|
+
def after
|
69
69
|
data.check(:fetched, {Symbol => [Float]}) # 2. Typed Variables
|
70
70
|
end
|
71
71
|
|
@@ -84,7 +84,7 @@ in each scopes, and can share variables only via data object.
|
|
84
84
|
|
85
85
|
So you can easily refactor or replace FetchData unit
|
86
86
|
because there are no implicit instance variable dependencies
|
87
|
-
and futhermore all depencenies would be explicitly declared in "
|
87
|
+
and futhermore all depencenies would be explicitly declared in "before","after" method.
|
88
88
|
|
89
89
|
=== execute
|
90
90
|
|
data/lib/ccp/invokers/base.rb
CHANGED
@@ -57,13 +57,6 @@ module Ccp
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
def benchmark
|
61
|
-
before
|
62
|
-
super
|
63
|
-
after
|
64
|
-
return true
|
65
|
-
end
|
66
|
-
|
67
60
|
def receiver
|
68
61
|
@receiver.must(Receivers::Base)
|
69
62
|
end
|
@@ -72,14 +65,10 @@ module Ccp
|
|
72
65
|
@receiver = value.must(Receivers::Base)
|
73
66
|
end
|
74
67
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
def after
|
80
|
-
show_profiles if data?(:profile)
|
81
|
-
show_comments if data?(:comment)
|
82
|
-
end
|
68
|
+
def after
|
69
|
+
show_profiles if data?(:profile)
|
70
|
+
show_comments if data?(:comment)
|
71
|
+
end
|
83
72
|
end
|
84
73
|
end
|
85
74
|
end
|
@@ -16,9 +16,9 @@ module Ccp
|
|
16
16
|
|
17
17
|
def profile(target, method)
|
18
18
|
start = Time.new
|
19
|
-
target.__send__(:
|
19
|
+
target.__send__(:before) if target.respond_to?(:before)
|
20
20
|
target.__send__(method)
|
21
|
-
target.__send__(:
|
21
|
+
target.__send__(:after) if target.respond_to?(:after)
|
22
22
|
|
23
23
|
case target
|
24
24
|
when Ccp::Commands::Composite
|
data/lib/ccp/version.rb
CHANGED
@@ -2,66 +2,66 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Ccp::Commands::Composite do
|
4
4
|
describe "#execute" do
|
5
|
-
it "should call its execute and sub commands's {
|
5
|
+
it "should call its execute and sub commands's {before,execute,after} in declared order" do
|
6
6
|
c = Program.new
|
7
7
|
c.data[:breadcrumbs] = []
|
8
8
|
c.execute
|
9
9
|
c.data[:breadcrumbs].should ==
|
10
|
-
["Cmd1#
|
11
|
-
"Cmd2#
|
12
|
-
"Cmd3#
|
10
|
+
["Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
11
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
12
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after"]
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "#benchmark" do
|
17
|
-
it "should call its and sub commands's {
|
17
|
+
it "should call its and sub commands's {before,execute,after} in declared order" do
|
18
18
|
c = Program.new
|
19
19
|
c.data[:breadcrumbs] = []
|
20
20
|
c.benchmark
|
21
21
|
c.data[:breadcrumbs].should ==
|
22
|
-
["Program#
|
23
|
-
"Cmd1#
|
24
|
-
"Cmd2#
|
25
|
-
"Cmd3#
|
26
|
-
"Program#
|
22
|
+
["Program#before",
|
23
|
+
"Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
24
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
25
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
26
|
+
"Program#after"]
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe "Ccp::Commands::Composite(nested)" do
|
32
32
|
describe "#execute" do
|
33
|
-
it "should call its execute and sub commands's {
|
33
|
+
it "should call its execute and sub commands's {before,execute,after} in declared order" do
|
34
34
|
c = CompositeProgram.new
|
35
35
|
c.data[:breadcrumbs] = []
|
36
36
|
c.execute
|
37
37
|
c.data[:breadcrumbs].should ==
|
38
|
-
["Cmd1#
|
39
|
-
"Cmd23#
|
38
|
+
["Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
39
|
+
"Cmd23#before",
|
40
40
|
"Cmd23#execute:start",
|
41
|
-
"Cmd2#
|
42
|
-
"Cmd3#
|
41
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
42
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
43
43
|
"Cmd23#execute:end",
|
44
|
-
"Cmd23#
|
45
|
-
"Cmd4#
|
44
|
+
"Cmd23#after",
|
45
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after"]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
describe "#benchmark" do
|
50
|
-
it "should call its and sub commands's {
|
50
|
+
it "should call its and sub commands's {before,execute,after} in declared order" do
|
51
51
|
c = CompositeProgram.new
|
52
52
|
c.data[:breadcrumbs] = []
|
53
53
|
c.benchmark
|
54
54
|
c.data[:breadcrumbs].should ==
|
55
|
-
["CompositeProgram#
|
56
|
-
"Cmd1#
|
57
|
-
"Cmd23#
|
55
|
+
["CompositeProgram#before",
|
56
|
+
"Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
57
|
+
"Cmd23#before",
|
58
58
|
"Cmd23#execute:start",
|
59
|
-
"Cmd2#
|
60
|
-
"Cmd3#
|
59
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
60
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
61
61
|
"Cmd23#execute:end",
|
62
|
-
"Cmd23#
|
63
|
-
"Cmd4#
|
64
|
-
"CompositeProgram#
|
62
|
+
"Cmd23#after",
|
63
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after",
|
64
|
+
"CompositeProgram#after"]
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
data/spec/commands_core_spec.rb
CHANGED
@@ -28,11 +28,11 @@ describe Ccp::Commands::Core do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe "#benchmark" do
|
31
|
-
it "should call {
|
31
|
+
it "should call {before,execute,after}" do
|
32
32
|
cmd1 = Cmd1.new
|
33
33
|
cmd1.data[:breadcrumbs] = []
|
34
34
|
cmd1.benchmark
|
35
|
-
cmd1.data[:breadcrumbs].should == ["Cmd1#
|
35
|
+
cmd1.data[:breadcrumbs].should == ["Cmd1#before", "Cmd1#execute", "Cmd1#after"]
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should call receiver.profile" do
|
data/spec/invokers_spec.rb
CHANGED
@@ -4,55 +4,55 @@ describe Ccp::Invokers::Base do
|
|
4
4
|
def no_logger; Logger.new('/dev/null'); end
|
5
5
|
|
6
6
|
describe "#execute" do
|
7
|
-
it "should call its execute and sub commands's {
|
7
|
+
it "should call its execute and sub commands's {before,execute,after} in declared order" do
|
8
8
|
c = CompositeInvoker.new
|
9
9
|
c.data[:breadcrumbs] = []
|
10
10
|
c.execute
|
11
11
|
c.data[:breadcrumbs].should ==
|
12
|
-
["Cmd1#
|
13
|
-
"Cmd23#
|
12
|
+
["Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
13
|
+
"Cmd23#before",
|
14
14
|
"Cmd23#execute:start",
|
15
|
-
"Cmd2#
|
16
|
-
"Cmd3#
|
15
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
16
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
17
17
|
"Cmd23#execute:end",
|
18
|
-
"Cmd23#
|
19
|
-
"Cmd4#
|
18
|
+
"Cmd23#after",
|
19
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after"]
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "#benchmark" do
|
24
|
-
it "should call its and sub commands's {
|
24
|
+
it "should call its and sub commands's {before,execute,after} in declared order" do
|
25
25
|
c = CompositeInvoker.new
|
26
26
|
c.data[:breadcrumbs] = []
|
27
27
|
c.benchmark
|
28
28
|
c.data[:breadcrumbs].should ==
|
29
|
-
["CompositeInvoker#
|
30
|
-
"Cmd1#
|
31
|
-
"Cmd23#
|
29
|
+
["CompositeInvoker#before",
|
30
|
+
"Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
31
|
+
"Cmd23#before",
|
32
32
|
"Cmd23#execute:start",
|
33
|
-
"Cmd2#
|
34
|
-
"Cmd3#
|
33
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
34
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
35
35
|
"Cmd23#execute:end",
|
36
|
-
"Cmd23#
|
37
|
-
"Cmd4#
|
38
|
-
"CompositeInvoker#
|
36
|
+
"Cmd23#after",
|
37
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after",
|
38
|
+
"CompositeInvoker#after"]
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
describe ".execute" do
|
43
|
-
it "should call its and sub commands's {
|
43
|
+
it "should call its and sub commands's {before,execute,after} in declared order" do
|
44
44
|
c = CompositeInvoker.execute(:breadcrumbs => [])
|
45
45
|
c.data[:breadcrumbs].should ==
|
46
|
-
["CompositeInvoker#
|
47
|
-
"Cmd1#
|
48
|
-
"Cmd23#
|
46
|
+
["CompositeInvoker#before",
|
47
|
+
"Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
48
|
+
"Cmd23#before",
|
49
49
|
"Cmd23#execute:start",
|
50
|
-
"Cmd2#
|
51
|
-
"Cmd3#
|
50
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
51
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
52
52
|
"Cmd23#execute:end",
|
53
|
-
"Cmd23#
|
54
|
-
"Cmd4#
|
55
|
-
"CompositeInvoker#
|
53
|
+
"Cmd23#after",
|
54
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after",
|
55
|
+
"CompositeInvoker#after"]
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should call only show_comments in default" do
|
@@ -76,23 +76,23 @@ describe Ccp::Invokers::Base do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
describe ".benchmark" do
|
79
|
-
it "should call its and sub commands's {
|
79
|
+
it "should call its and sub commands's {before,execute,after} in declared order" do
|
80
80
|
r = Ccp::Receivers::Base.new
|
81
81
|
r.stub!(:show_comments) # disable output
|
82
82
|
r.stub!(:show_profiles) # disable output
|
83
83
|
|
84
84
|
c = CompositeInvoker.benchmark(:receiver => r, :breadcrumbs => [])
|
85
85
|
c.data[:breadcrumbs].should ==
|
86
|
-
["CompositeInvoker#
|
87
|
-
"Cmd1#
|
88
|
-
"Cmd23#
|
86
|
+
["CompositeInvoker#before",
|
87
|
+
"Cmd1#before", "Cmd1#execute", "Cmd1#after",
|
88
|
+
"Cmd23#before",
|
89
89
|
"Cmd23#execute:start",
|
90
|
-
"Cmd2#
|
91
|
-
"Cmd3#
|
90
|
+
"Cmd2#before", "Cmd2#execute", "Cmd2#after",
|
91
|
+
"Cmd3#before", "Cmd3#execute", "Cmd3#after",
|
92
92
|
"Cmd23#execute:end",
|
93
|
-
"Cmd23#
|
94
|
-
"Cmd4#
|
95
|
-
"CompositeInvoker#
|
93
|
+
"Cmd23#after",
|
94
|
+
"Cmd4#before", "Cmd4#execute", "Cmd4#after",
|
95
|
+
"CompositeInvoker#after"]
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should call only show_comments in default" do
|
data/spec/models.rb
CHANGED
@@ -8,7 +8,7 @@ class Cmd1
|
|
8
8
|
include Ccp::Commands::Core
|
9
9
|
include Breadcrumbing
|
10
10
|
|
11
|
-
def
|
11
|
+
def before
|
12
12
|
data[:breadcrumbs] << this
|
13
13
|
end
|
14
14
|
|
@@ -16,7 +16,7 @@ class Cmd1
|
|
16
16
|
data[:breadcrumbs] << this
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
19
|
+
def after
|
20
20
|
data[:breadcrumbs] << this
|
21
21
|
end
|
22
22
|
end
|
@@ -33,11 +33,11 @@ class Program
|
|
33
33
|
command Cmd2
|
34
34
|
command Cmd3
|
35
35
|
|
36
|
-
def
|
36
|
+
def before
|
37
37
|
data[:breadcrumbs] << this
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
40
|
+
def after
|
41
41
|
data[:breadcrumbs] << this
|
42
42
|
end
|
43
43
|
end
|
@@ -49,7 +49,7 @@ class Cmd23
|
|
49
49
|
command Cmd2
|
50
50
|
command Cmd3
|
51
51
|
|
52
|
-
def
|
52
|
+
def before
|
53
53
|
data[:breadcrumbs] << this
|
54
54
|
end
|
55
55
|
|
@@ -59,7 +59,7 @@ class Cmd23
|
|
59
59
|
data[:breadcrumbs] << this + ":end"
|
60
60
|
end
|
61
61
|
|
62
|
-
def
|
62
|
+
def after
|
63
63
|
data[:breadcrumbs] << this
|
64
64
|
end
|
65
65
|
end
|
@@ -72,11 +72,11 @@ class CompositeProgram
|
|
72
72
|
command Cmd23
|
73
73
|
command Cmd4
|
74
74
|
|
75
|
-
def
|
75
|
+
def before
|
76
76
|
data[:breadcrumbs] << this
|
77
77
|
end
|
78
78
|
|
79
|
-
def
|
79
|
+
def after
|
80
80
|
data[:breadcrumbs] << this
|
81
81
|
end
|
82
82
|
end
|
@@ -88,11 +88,12 @@ class CompositeInvoker < Ccp::Invokers::Base
|
|
88
88
|
command Cmd23
|
89
89
|
command Cmd4
|
90
90
|
|
91
|
-
def
|
91
|
+
def before
|
92
92
|
data[:breadcrumbs] << this
|
93
93
|
end
|
94
94
|
|
95
|
-
def
|
95
|
+
def after
|
96
96
|
data[:breadcrumbs] << this
|
97
|
+
super
|
97
98
|
end
|
98
99
|
end
|
metadata
CHANGED