jbuilder 2.2.0 → 2.2.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -3
- data/CHANGELOG.md +4 -0
- data/jbuilder.gemspec +1 -1
- data/lib/jbuilder.rb +13 -8
- data/test/jbuilder_test.rb +11 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 894288984c47a8024c8ad9aca1623537133d53b2
|
4
|
+
data.tar.gz: 988d1ca4d56c52d9e258c70f75e662864c6c8023
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02aaa8faef28ac67519dca82810eb0b7d1a44a34550a63e134fc23f4db0710d0074b3ca2123adcafe825d50da7427f0593d7861e2edd4b7619bc0f92c27c2d9f
|
7
|
+
data.tar.gz: 825104af0dbf0885c2aa9457cd328384a8ecb9c0e4ff2463878b5dbc69b9f17096f1a1bd0ac826445c5b54944cf8190e9686367c6eb59456d604c963dc0bc8c1
|
data/.travis.yml
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 1.9
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
4
|
+
- 1.9
|
5
|
+
- 2.0
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
8
|
+
- ruby-head
|
7
9
|
- jruby-19mode
|
8
10
|
- rbx
|
9
11
|
|
@@ -16,8 +18,10 @@ gemfile:
|
|
16
18
|
|
17
19
|
matrix:
|
18
20
|
allow_failures:
|
21
|
+
- rvm: 2.2
|
19
22
|
- rvm: jruby-19mode
|
20
23
|
- rvm: rbx
|
24
|
+
- rvm: ruby-head
|
21
25
|
fast_finish: true
|
22
26
|
|
23
27
|
notifications:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
2.2.1
|
4
|
+
-----
|
5
|
+
* [Fix empty block handling](https://github.com/rails/jbuilder/commit/972a11141403269e9b17b45b0c95f8a9788245ee)
|
6
|
+
|
3
7
|
2.2.0
|
4
8
|
-----
|
5
9
|
* [Allow to skip `array!` iterations by calling `next`](https://github.com/rails/jbuilder/commit/81a63308fb9d5002519dd871f829ccc58067251a)
|
data/jbuilder.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'jbuilder'
|
3
|
-
s.version = '2.2.
|
3
|
+
s.version = '2.2.1'
|
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'
|
data/lib/jbuilder.rb
CHANGED
@@ -25,7 +25,7 @@ class Jbuilder
|
|
25
25
|
|
26
26
|
def set!(key, value = BLANK, *args, &block)
|
27
27
|
result = if block
|
28
|
-
if
|
28
|
+
if !_blank?(value)
|
29
29
|
# json.comments @post.comments { |comment| ... }
|
30
30
|
# { "comments": [ { ... }, { ... } ] }
|
31
31
|
_scope{ array! value, &block }
|
@@ -253,14 +253,18 @@ class Jbuilder
|
|
253
253
|
end
|
254
254
|
|
255
255
|
def _merge_block(key, &block)
|
256
|
-
current_value =
|
256
|
+
current_value = _blank? ? BLANK : @attributes.fetch(_key(key), BLANK)
|
257
257
|
raise NullError.build(key) if current_value.nil?
|
258
|
+
|
258
259
|
value = _scope{ yield self }
|
259
|
-
value.nil? ? value : _merge_values(current_value, value)
|
260
|
-
end
|
261
260
|
|
262
|
-
|
263
|
-
|
261
|
+
if _blank?(value)
|
262
|
+
current_value
|
263
|
+
elsif _blank?(current_value) || value.nil?
|
264
|
+
value
|
265
|
+
else
|
266
|
+
_merge_values(current_value, value)
|
267
|
+
end
|
264
268
|
end
|
265
269
|
|
266
270
|
def _write(key, value)
|
@@ -275,6 +279,7 @@ class Jbuilder
|
|
275
279
|
def _set_value(key, value)
|
276
280
|
raise NullError.build(key) if @attributes.nil?
|
277
281
|
return if @ignore_nil && value.nil?
|
282
|
+
return if _blank?(value)
|
278
283
|
_write key, value
|
279
284
|
end
|
280
285
|
|
@@ -310,8 +315,8 @@ class Jbuilder
|
|
310
315
|
attributes
|
311
316
|
end
|
312
317
|
|
313
|
-
def _blank?
|
314
|
-
BLANK ==
|
318
|
+
def _blank?(value=@attributes)
|
319
|
+
BLANK == value
|
315
320
|
end
|
316
321
|
end
|
317
322
|
|
data/test/jbuilder_test.rb
CHANGED
@@ -131,6 +131,17 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
131
131
|
assert_equal 32, result['author']['age']
|
132
132
|
end
|
133
133
|
|
134
|
+
test 'empty block handling' do
|
135
|
+
result = jbuild do |json|
|
136
|
+
json.foo 'bar'
|
137
|
+
json.author do
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
assert_equal 'bar', result['foo']
|
142
|
+
assert !result.key?('author')
|
143
|
+
end
|
144
|
+
|
134
145
|
test 'blocks are additive' do
|
135
146
|
result = jbuild do |json|
|
136
147
|
json.author do
|
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.2.
|
4
|
+
version: 2.2.1
|
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-10-
|
12
|
+
date: 2014-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|