mediator 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mediator/parser.rb +1 -1
- data/lib/mediator/renderer.rb +1 -3
- data/lib/mediator.rb +14 -5
- data/mediator.gemspec +1 -1
- data/test/mediator_renderer_test.rb +23 -17
- metadata +1 -1
data/lib/mediator/parser.rb
CHANGED
@@ -17,7 +17,7 @@ class Mediator
|
|
17
17
|
|
18
18
|
def has? name, options = nil
|
19
19
|
selector = (options && options[:from]) || name
|
20
|
-
(options && options.has_key?(:value))
|
20
|
+
(options && options.has_key?(:value)) || mediator.data_has?(data,selector)
|
21
21
|
end
|
22
22
|
|
23
23
|
def id name, options = {}
|
data/lib/mediator/renderer.rb
CHANGED
@@ -17,7 +17,7 @@ class Mediator
|
|
17
17
|
|
18
18
|
def has? name, options = nil
|
19
19
|
selector = (options && options[:from]) || name
|
20
|
-
(options && options.has_key?(:value))
|
20
|
+
(options && options.has_key?(:value)) || mediator.subject_has?(selector)
|
21
21
|
end
|
22
22
|
|
23
23
|
def id name, options = {}
|
@@ -42,8 +42,6 @@ class Mediator
|
|
42
42
|
name = name[0..-2].intern
|
43
43
|
end
|
44
44
|
|
45
|
-
return unless has? name, options
|
46
|
-
|
47
45
|
value = get name, options
|
48
46
|
return if empty? value, options
|
49
47
|
|
data/lib/mediator.rb
CHANGED
@@ -137,17 +137,26 @@ class Mediator
|
|
137
137
|
Mediator::Renderer.new self
|
138
138
|
end
|
139
139
|
|
140
|
+
# True if subject can construct a value for name
|
141
|
+
|
142
|
+
def subject_has? name
|
143
|
+
subject.respond_to?(name) || subject.respond_to?(name.to_s)
|
144
|
+
end
|
145
|
+
|
146
|
+
# True if data can return a value for name
|
147
|
+
|
148
|
+
def data_has? data, name
|
149
|
+
data.has_key?(name) || data.has_key?(name.to_s)
|
150
|
+
end
|
151
|
+
|
140
152
|
# Gets the `name` property from `subject`. The default
|
141
153
|
# implementation calls the `name` method if it exists.
|
142
154
|
|
143
155
|
def get name
|
144
156
|
value = subject.send name if subject.respond_to? name
|
145
|
-
|
146
|
-
return value unless value.nil?
|
147
|
-
|
148
|
-
value ||= construct name
|
157
|
+
value = construct name if value.nil?
|
149
158
|
|
150
|
-
getting name, value
|
159
|
+
getting name, value unless value.nil?
|
151
160
|
end
|
152
161
|
|
153
162
|
# Called when getting `name` from `subject`. Can be used to
|
data/mediator.gemspec
CHANGED
@@ -221,7 +221,7 @@ describe Mediator::Renderer do
|
|
221
221
|
assert_equal Hash.new, d
|
222
222
|
end
|
223
223
|
|
224
|
-
it "optionally allows empty values
|
224
|
+
it "optionally allows empty values" do
|
225
225
|
c = Class.new Mediator do
|
226
226
|
def render! r
|
227
227
|
r.key :foo, empty: true
|
@@ -229,7 +229,6 @@ describe Mediator::Renderer do
|
|
229
229
|
end
|
230
230
|
|
231
231
|
s = OpenStruct.new
|
232
|
-
s.foo = nil
|
233
232
|
m = c.new s
|
234
233
|
d = m.render
|
235
234
|
e = { foo: nil }
|
@@ -237,21 +236,6 @@ describe Mediator::Renderer do
|
|
237
236
|
assert_equal e, d
|
238
237
|
end
|
239
238
|
|
240
|
-
it "ditches empty values when not defined in any case" do
|
241
|
-
c = Class.new Mediator do
|
242
|
-
def render! r
|
243
|
-
r.key :foo, empty: true
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
s = OpenStruct.new
|
248
|
-
m = c.new s
|
249
|
-
d = m.render
|
250
|
-
e = { }
|
251
|
-
|
252
|
-
assert_equal e, d
|
253
|
-
end
|
254
|
-
|
255
239
|
it "optionally maps names" do
|
256
240
|
c = Class.new Mediator do
|
257
241
|
def render! r
|
@@ -294,6 +278,28 @@ describe Mediator::Renderer do
|
|
294
278
|
|
295
279
|
assert_equal "bar", d[:foo]
|
296
280
|
end
|
281
|
+
|
282
|
+
it "can define its own access to data" do
|
283
|
+
c = Class.new Mediator do
|
284
|
+
def construct name
|
285
|
+
subject[name]
|
286
|
+
end
|
287
|
+
|
288
|
+
def subject_has? name
|
289
|
+
!!subject[name]
|
290
|
+
end
|
291
|
+
|
292
|
+
def render! r
|
293
|
+
r.key :foo
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
s = { :foo => "bar" }
|
298
|
+
m = c.new s
|
299
|
+
d = m.render
|
300
|
+
|
301
|
+
assert_equal "bar", d[:foo]
|
302
|
+
end
|
297
303
|
end
|
298
304
|
|
299
305
|
describe "one" do
|