mediator 0.4.0 → 0.4.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/parser.rb +4 -2
- data/mediator.gemspec +1 -1
- data/test/mediator_parser_test.rb +26 -0
- metadata +2 -2
data/lib/mediator/parser.rb
CHANGED
@@ -54,12 +54,14 @@ class Mediator
|
|
54
54
|
def many name, options = {}, &block
|
55
55
|
options = {construct: true}.merge options
|
56
56
|
|
57
|
+
data = get(name, options)
|
58
|
+
return if data.nil? and !options[:empty] # Can't use main empty? call here as [] does not count as empty..
|
59
|
+
|
57
60
|
mediator.set name, [] unless options[:merge]
|
58
61
|
|
59
|
-
data = get(name, options) || []
|
60
62
|
subj = (options && options[:subject]) || mediator.get(name, options)
|
61
63
|
|
62
|
-
data.each do |d|
|
64
|
+
(data || []).each do |d|
|
63
65
|
name = name[0..-2] if name[-1] == "s"
|
64
66
|
s = mediator.construct name
|
65
67
|
sub s, d, options, &block
|
data/mediator.gemspec
CHANGED
@@ -255,6 +255,32 @@ describe Mediator::Parser do
|
|
255
255
|
assert_equal ["blup?"], s.foos.map(&:baz)
|
256
256
|
end
|
257
257
|
|
258
|
+
it "does nothing with nil values by default" do
|
259
|
+
s = Bar.new foos: [ Foo.new(baz: "bar") ]
|
260
|
+
|
261
|
+
assert_equal ["bar"], s.foos.map(&:baz)
|
262
|
+
|
263
|
+
m = Mediator[s]
|
264
|
+
d = { foos: nil }
|
265
|
+
|
266
|
+
m.parse d
|
267
|
+
|
268
|
+
assert_equal ["bar"], s.foos.map(&:baz)
|
269
|
+
end
|
270
|
+
|
271
|
+
it "does something with []" do
|
272
|
+
s = Bar.new foos: [ Foo.new(baz: "bar") ]
|
273
|
+
|
274
|
+
assert_equal ["bar"], s.foos.map(&:baz)
|
275
|
+
|
276
|
+
m = Mediator[s]
|
277
|
+
d = { foos: [] }
|
278
|
+
|
279
|
+
m.parse d
|
280
|
+
|
281
|
+
assert_equal [], s.foos.map(&:baz)
|
282
|
+
end
|
283
|
+
|
258
284
|
it "adds new models if told to" do
|
259
285
|
s = Bar.new merge_foos: [ Foo.new(baz: "bar") ]
|
260
286
|
|
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.4.
|
4
|
+
version: 0.4.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: 2013-03-
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A go-between for models.
|
15
15
|
email:
|