mediator 0.1.0 → 0.1.1
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/lib/mediator/renderer.rb +7 -0
- data/lib/mediator.rb +4 -1
- data/mediator.gemspec +1 -1
- data/test/mediator_renderer_test.rb +31 -1
- metadata +2 -2
data/lib/mediator/renderer.rb
CHANGED
@@ -15,6 +15,11 @@ class Mediator
|
|
15
15
|
(options && options[:value]) || mediator.get(selector)
|
16
16
|
end
|
17
17
|
|
18
|
+
def has? name, options = nil
|
19
|
+
selector = (options && options[:from]) || name
|
20
|
+
(options && options.has_key?(:value)) || mediator.subject.respond_to?(selector) || mediator.subject.respond_to?(selector.to_s)
|
21
|
+
end
|
22
|
+
|
18
23
|
def id name, options = {}
|
19
24
|
key name, options.merge(from: "#{name}_id")
|
20
25
|
end
|
@@ -37,6 +42,8 @@ class Mediator
|
|
37
42
|
name = name[0..-2].intern
|
38
43
|
end
|
39
44
|
|
45
|
+
return unless has? name, options
|
46
|
+
|
40
47
|
value = get name, options
|
41
48
|
return if empty? value, options
|
42
49
|
|
data/lib/mediator.rb
CHANGED
@@ -141,7 +141,10 @@ class Mediator
|
|
141
141
|
# implementation calls the `name` method if it exists.
|
142
142
|
|
143
143
|
def get name
|
144
|
-
value
|
144
|
+
value = subject.send name if subject.respond_to? name
|
145
|
+
|
146
|
+
return value unless value.nil?
|
147
|
+
|
145
148
|
value ||= construct name
|
146
149
|
|
147
150
|
getting name, value if value
|
data/mediator.gemspec
CHANGED
@@ -179,6 +179,20 @@ describe Mediator::Renderer do
|
|
179
179
|
assert d[:foo]
|
180
180
|
end
|
181
181
|
|
182
|
+
it "Works with false boolean" do
|
183
|
+
c = Class.new Mediator do
|
184
|
+
def render! r
|
185
|
+
r.key :foo
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
s = OpenStruct.new foo: false
|
190
|
+
m = c.new s
|
191
|
+
d = m.render
|
192
|
+
|
193
|
+
assert_equal false, d[:foo]
|
194
|
+
end
|
195
|
+
|
182
196
|
it "ignores nil or empty values" do
|
183
197
|
c = Class.new Mediator do
|
184
198
|
def render! r
|
@@ -207,7 +221,7 @@ describe Mediator::Renderer do
|
|
207
221
|
assert_equal Hash.new, d
|
208
222
|
end
|
209
223
|
|
210
|
-
it "optionally allows empty values" do
|
224
|
+
it "optionally allows empty values when defined" do
|
211
225
|
c = Class.new Mediator do
|
212
226
|
def render! r
|
213
227
|
r.key :foo, empty: true
|
@@ -215,6 +229,7 @@ describe Mediator::Renderer do
|
|
215
229
|
end
|
216
230
|
|
217
231
|
s = OpenStruct.new
|
232
|
+
s.foo = nil
|
218
233
|
m = c.new s
|
219
234
|
d = m.render
|
220
235
|
e = { foo: nil }
|
@@ -222,6 +237,21 @@ describe Mediator::Renderer do
|
|
222
237
|
assert_equal e, d
|
223
238
|
end
|
224
239
|
|
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
|
+
|
225
255
|
it "optionally maps names" do
|
226
256
|
c = Class.new Mediator do
|
227
257
|
def render! r
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-06-12 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: A go-between for models.
|
15
15
|
email:
|