schizo 0.1.2 → 0.1.3
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/.gemfiles/Gemfile.activerecord-3.2 +5 -0
- data/.travis.yml +9 -1
- data/CHANGELOG +3 -0
- data/lib/schizo/data.rb +12 -6
- data/lib/schizo/version.rb +1 -1
- data/spec/nested_spec.rb +10 -0
- metadata +64 -33
data/.travis.yml
CHANGED
data/CHANGELOG
CHANGED
data/lib/schizo/data.rb
CHANGED
@@ -18,13 +18,19 @@ module Schizo
|
|
18
18
|
# poster = user.as(Poster)
|
19
19
|
# poster.name = "coco"
|
20
20
|
# user.name # => "callie"
|
21
|
-
def as(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
facade.
|
21
|
+
def as(*roles, &block)
|
22
|
+
first_role = roles.first
|
23
|
+
rest_roles = *roles[1..-1]
|
24
|
+
if rest_roles.empty?
|
25
|
+
facade = Facade::ObjectBuilder.new(self, first_role).product
|
26
|
+
if block_given?
|
27
|
+
block.call(facade)
|
28
|
+
facade.actualize
|
29
|
+
else
|
30
|
+
facade
|
31
|
+
end
|
26
32
|
else
|
27
|
-
|
33
|
+
as(first_role).as(*rest_roles, &block)
|
28
34
|
end
|
29
35
|
end
|
30
36
|
|
data/lib/schizo/version.rb
CHANGED
data/spec/nested_spec.rb
CHANGED
@@ -46,12 +46,18 @@ describe "a nested facade for ClassA with RoleA, RoleB and RoleC" do
|
|
46
46
|
facade_b.as(role_c)
|
47
47
|
end
|
48
48
|
|
49
|
+
let(:facade_a_b_c) do
|
50
|
+
object.as(role_a, role_b, role_c)
|
51
|
+
end
|
52
|
+
|
49
53
|
it "#instance_of?(ClassA) is true" do
|
50
54
|
facade_c.should be_instance_of(class_a)
|
55
|
+
facade_a_b_c.should be_instance_of(class_a)
|
51
56
|
end
|
52
57
|
|
53
58
|
it "#kind_of?(ClassA) is true" do
|
54
59
|
facade_c.should be_kind_of(class_a)
|
60
|
+
facade_a_b_c.should be_kind_of(class_a)
|
55
61
|
end
|
56
62
|
|
57
63
|
it "should have methods from RoleA, RoleB and RoleC" do
|
@@ -66,6 +72,10 @@ describe "a nested facade for ClassA with RoleA, RoleB and RoleC" do
|
|
66
72
|
facade_c.should respond_to(:set_foo)
|
67
73
|
facade_c.should respond_to(:set_bar)
|
68
74
|
facade_c.should respond_to(:set_baz)
|
75
|
+
|
76
|
+
facade_a_b_c.should respond_to(:set_foo)
|
77
|
+
facade_a_b_c.should respond_to(:set_bar)
|
78
|
+
facade_a_b_c.should respond_to(:set_baz)
|
69
79
|
end
|
70
80
|
|
71
81
|
it "#actualize should walk up the chain" do
|
metadata
CHANGED
@@ -1,82 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schizo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.2
|
5
4
|
prerelease:
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Christopher J. Bottaro
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-09-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
prerelease: false
|
15
16
|
name: rspec
|
16
|
-
|
17
|
+
type: :development
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
17
23
|
none: false
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
18
25
|
requirements:
|
19
26
|
- - ! '>='
|
20
27
|
- !ruby/object:Gem::Version
|
21
28
|
version: '0'
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: *70253933607880
|
29
|
+
none: false
|
25
30
|
- !ruby/object:Gem::Dependency
|
31
|
+
prerelease: false
|
26
32
|
name: activerecord
|
27
|
-
|
33
|
+
type: :development
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
28
39
|
none: false
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
29
41
|
requirements:
|
30
42
|
- - ! '>='
|
31
43
|
- !ruby/object:Gem::Version
|
32
44
|
version: '0'
|
33
|
-
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70253933607240
|
45
|
+
none: false
|
36
46
|
- !ruby/object:Gem::Dependency
|
47
|
+
prerelease: false
|
37
48
|
name: sqlite3
|
38
|
-
|
49
|
+
type: :development
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
39
55
|
none: false
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
40
57
|
requirements:
|
41
58
|
- - ! '>='
|
42
59
|
- !ruby/object:Gem::Version
|
43
60
|
version: '0'
|
44
|
-
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *70253933606580
|
61
|
+
none: false
|
47
62
|
- !ruby/object:Gem::Dependency
|
63
|
+
prerelease: false
|
48
64
|
name: rdoc
|
49
|
-
|
65
|
+
type: :development
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
50
71
|
none: false
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
51
73
|
requirements:
|
52
74
|
- - ! '>='
|
53
75
|
- !ruby/object:Gem::Version
|
54
76
|
version: '0'
|
55
|
-
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70253933605840
|
77
|
+
none: false
|
58
78
|
- !ruby/object:Gem::Dependency
|
79
|
+
prerelease: false
|
59
80
|
name: pry
|
60
|
-
|
81
|
+
type: :development
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
61
87
|
none: false
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
62
89
|
requirements:
|
63
90
|
- - ! '>='
|
64
91
|
- !ruby/object:Gem::Version
|
65
92
|
version: '0'
|
66
|
-
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *70253933604920
|
93
|
+
none: false
|
69
94
|
- !ruby/object:Gem::Dependency
|
95
|
+
prerelease: false
|
70
96
|
name: rake
|
71
|
-
|
97
|
+
type: :development
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
72
103
|
none: false
|
104
|
+
requirement: !ruby/object:Gem::Requirement
|
73
105
|
requirements:
|
74
106
|
- - ! '>='
|
75
107
|
- !ruby/object:Gem::Version
|
76
108
|
version: '0'
|
77
|
-
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *70253933604120
|
109
|
+
none: false
|
80
110
|
description: DCI (data, context and interaction) for Ruby / Rails / ActiveRecord
|
81
111
|
email:
|
82
112
|
- cjbottaro@alumni.cs.utexas.edu
|
@@ -84,6 +114,7 @@ executables: []
|
|
84
114
|
extensions: []
|
85
115
|
extra_rdoc_files: []
|
86
116
|
files:
|
117
|
+
- .gemfiles/Gemfile.activerecord-3.2
|
87
118
|
- .gitignore
|
88
119
|
- .travis.yml
|
89
120
|
- CHANGELOG
|
@@ -117,26 +148,26 @@ rdoc_options: []
|
|
117
148
|
require_paths:
|
118
149
|
- lib
|
119
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
-
none: false
|
121
151
|
requirements:
|
122
152
|
- - ! '>='
|
123
153
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
154
|
segments:
|
126
155
|
- 0
|
127
|
-
hash: -
|
128
|
-
|
156
|
+
hash: -3318887318708841529
|
157
|
+
version: '0'
|
129
158
|
none: false
|
159
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
160
|
requirements:
|
131
161
|
- - ! '>='
|
132
162
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
163
|
segments:
|
135
164
|
- 0
|
136
|
-
hash: -
|
165
|
+
hash: -3318887318708841529
|
166
|
+
version: '0'
|
167
|
+
none: false
|
137
168
|
requirements: []
|
138
169
|
rubyforge_project: schizo
|
139
|
-
rubygems_version: 1.8.
|
170
|
+
rubygems_version: 1.8.23
|
140
171
|
signing_key:
|
141
172
|
specification_version: 3
|
142
173
|
summary: DCI (data, context and interaction) for Ruby / Rails / ActiveRecord
|