jbuilder 2.1.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b2efe8946f99533187a724fea0e4662030b87df
4
- data.tar.gz: 8e4e8c1beb1d460ed25e900579399516b039a1c0
3
+ metadata.gz: 076e206930dcf4260390206ed366028320a9b897
4
+ data.tar.gz: ad02cd2d181c768614d5eb87feedc326ebb9646e
5
5
  SHA512:
6
- metadata.gz: 1a343030413f3bbaa974c9e2e781c9c3ce8460d23ffd3e094baa2f168cc99d84bd74e3a6413a1579734479bdcb01688ea863dd6ad37a1315b1aa1836c63adfc9
7
- data.tar.gz: 872168b9ea2354d3915a680af7d32373f72805962001ab707b473bfd423a29d027e647d9d14e5b245ec66f5a535d8164f8657b11a9c9c18cea8aef16643b8e05
6
+ metadata.gz: 8430c22ceacd53c3b3b26fc762e4e6051cd865b1542d0b38091953a5d2371890ea392a51e675a1d8d0c1fb4bbaa171fecd1d37d95c1448f6bd065a03b98f8875
7
+ data.tar.gz: 968917e192f36be06d5adf63803bd0a26443f474b29b71716c111cf29df08a283a47044eaef684091ecbd363c36cdf88ac14b5d8d17c4a40e1d3340ecb3a51f1
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ 2.1.2
4
+ -----
5
+ * [Cast array-like objects to array before merging](https://github.com/rails/jbuilder/commit/7b8c8a1cb09b7f3dd26e5643ebbd6b2ec67185db)
6
+
3
7
  2.1.1
4
8
  -----
5
9
  * [Remove unused file](https://github.com/rails/jbuilder/commit/e49e1047976fac93b8242ab212c7b1a463b70809)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jbuilder'
3
- s.version = '2.1.1'
3
+ s.version = '2.1.2'
4
4
  s.authors = ['David Heinemeier Hansson', 'Pavel Pravosud']
5
5
  s.email = ['david@37signals.com', 'pavel@pravosud.com']
6
6
  s.summary = 'Create JSON structures via a Builder-style DSL'
@@ -174,12 +174,14 @@ class Jbuilder
174
174
  #
175
175
  # [1,2,3]
176
176
  def array!(collection = [], *attributes, &block)
177
- array = if block
177
+ array = if collection.nil?
178
+ []
179
+ elsif block
178
180
  _map_collection(collection, &block)
179
181
  elsif attributes.any?
180
182
  _map_collection(collection) { |element| extract! element, *attributes }
181
183
  else
182
- collection
184
+ collection.to_a
183
185
  end
184
186
 
185
187
  merge! array
@@ -276,8 +278,6 @@ class Jbuilder
276
278
  end
277
279
 
278
280
  def _map_collection(collection)
279
- return [] if collection.nil?
280
-
281
281
  collection.map do |element|
282
282
  _scope{ yield element }
283
283
  end
@@ -18,6 +18,16 @@ class NonEnumerable
18
18
  end
19
19
  end
20
20
 
21
+ class VeryBasicWrapper < BasicObject
22
+ def initialize(thing)
23
+ @thing = thing
24
+ end
25
+
26
+ def method_missing(name, *args, &block)
27
+ @thing.send name, *args, &block
28
+ end
29
+ end
30
+
21
31
  # This is not Struct, because structs are Enumerable
22
32
  class Person
23
33
  attr_reader :name, :age
@@ -254,6 +264,16 @@ class JbuilderTest < ActiveSupport::TestCase
254
264
  assert_equal 'world', result['comments'].second['content']
255
265
  end
256
266
 
267
+ test 'array! casts array-like objects to array before merging' do
268
+ wrapped_array = VeryBasicWrapper.new(%w[foo bar])
269
+
270
+ result = jbuild do |json|
271
+ json.array! wrapped_array
272
+ end
273
+
274
+ assert_equal %w[foo bar], result
275
+ end
276
+
257
277
  test 'nesting multiple children from array with inline loop on root' do
258
278
  comments = [ Comment.new('hello', 1), Comment.new('world', 2) ]
259
279
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-16 00:00:00.000000000 Z
12
+ date: 2014-07-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport