jbuilder 0.8.2 → 0.8.3
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/Gemfile.lock +1 -1
- data/jbuilder-0.4.0.gem +0 -0
- data/jbuilder-0.8.1.gem +0 -0
- data/jbuilder.gemspec +1 -1
- data/lib/jbuilder.rb +30 -2
- data/test/jbuilder_test.rb +33 -0
- metadata +4 -3
- data/jbuilder-0.5.0.gem +0 -0
data/Gemfile.lock
CHANGED
data/jbuilder-0.4.0.gem
ADDED
Binary file
|
data/jbuilder-0.8.1.gem
ADDED
Binary file
|
data/jbuilder.gemspec
CHANGED
data/lib/jbuilder.rb
CHANGED
@@ -45,10 +45,12 @@ class Jbuilder < ActiveSupport::BasicObject
|
|
45
45
|
end
|
46
46
|
|
47
47
|
@@key_formatter = KeyFormatter.new
|
48
|
+
@@ignore_nil = false
|
48
49
|
|
49
|
-
def initialize(key_formatter = @@key_formatter.clone)
|
50
|
+
def initialize(key_formatter = @@key_formatter.clone, ignore_nil = @@ignore_nil)
|
50
51
|
@attributes = ::ActiveSupport::OrderedHash.new
|
51
52
|
@key_formatter = key_formatter
|
53
|
+
@ignore_nil = ignore_nil
|
52
54
|
end
|
53
55
|
|
54
56
|
# Dynamically set a key value pair.
|
@@ -112,6 +114,30 @@ class Jbuilder < ActiveSupport::BasicObject
|
|
112
114
|
@@key_formatter = KeyFormatter.new(*args)
|
113
115
|
end
|
114
116
|
|
117
|
+
# If you want to skip adding nil values to your JSON hash. This is useful
|
118
|
+
# for JSON clients that don't deal well with nil values, and would prefer
|
119
|
+
# not to receive keys which have null values.
|
120
|
+
#
|
121
|
+
# Example:
|
122
|
+
# json.ignore_nil!
|
123
|
+
# json.id User.new.id
|
124
|
+
#
|
125
|
+
# { "id": null }
|
126
|
+
#
|
127
|
+
# json.ignore_nil
|
128
|
+
# json.id User.new.id
|
129
|
+
#
|
130
|
+
# {}
|
131
|
+
#
|
132
|
+
def ignore_nil!(value = true)
|
133
|
+
@ignore_nil = value
|
134
|
+
end
|
135
|
+
|
136
|
+
# Same as instance method ignore_nil! except sets the default.
|
137
|
+
def self.ignore_nil(value = true)
|
138
|
+
@@ignore_nil = value
|
139
|
+
end
|
140
|
+
|
115
141
|
# Turns the current element into an array and yields a builder to add a hash.
|
116
142
|
#
|
117
143
|
# Example:
|
@@ -216,7 +242,9 @@ class Jbuilder < ActiveSupport::BasicObject
|
|
216
242
|
|
217
243
|
protected
|
218
244
|
def _set_value(key, value)
|
219
|
-
@
|
245
|
+
unless @ignore_nil && value.nil?
|
246
|
+
@attributes[@key_formatter.format(key)] = value
|
247
|
+
end
|
220
248
|
end
|
221
249
|
|
222
250
|
private
|
data/test/jbuilder_test.rb
CHANGED
@@ -457,4 +457,37 @@ class JbuilderTest < ActiveSupport::TestCase
|
|
457
457
|
assert_equal [], Jbuilder.send(:class_variable_get, "@@key_formatter").instance_variable_get("@cache").keys
|
458
458
|
end
|
459
459
|
|
460
|
+
test "ignore_nil! without a parameter" do
|
461
|
+
json = Jbuilder.new
|
462
|
+
json.ignore_nil!
|
463
|
+
json.test nil
|
464
|
+
|
465
|
+
assert_equal [], json.attributes!.keys
|
466
|
+
end
|
467
|
+
|
468
|
+
test "ignore_nil! with parameter" do
|
469
|
+
json = Jbuilder.new
|
470
|
+
json.ignore_nil! true
|
471
|
+
json.name "Bob"
|
472
|
+
json.dne nil
|
473
|
+
|
474
|
+
assert_equal ["name"], json.attributes!.keys
|
475
|
+
|
476
|
+
json = Jbuilder.new
|
477
|
+
json.ignore_nil! false
|
478
|
+
json.name "Bob"
|
479
|
+
json.dne nil
|
480
|
+
|
481
|
+
assert_equal ["name", "dne"], json.attributes!.keys
|
482
|
+
end
|
483
|
+
|
484
|
+
test "default ignore_nil!" do
|
485
|
+
Jbuilder.ignore_nil
|
486
|
+
json = Jbuilder.new
|
487
|
+
json.name "Bob"
|
488
|
+
json.dne nil
|
489
|
+
|
490
|
+
assert_equal ["name"], json.attributes!.keys
|
491
|
+
Jbuilder.send(:class_variable_set, "@@ignore_nil", false)
|
492
|
+
end
|
460
493
|
end
|
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: 0.8.
|
4
|
+
version: 0.8.3
|
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-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -35,7 +35,8 @@ extra_rdoc_files: []
|
|
35
35
|
files:
|
36
36
|
- ./Gemfile
|
37
37
|
- ./Gemfile.lock
|
38
|
-
- ./jbuilder-0.
|
38
|
+
- ./jbuilder-0.4.0.gem
|
39
|
+
- ./jbuilder-0.8.1.gem
|
39
40
|
- ./jbuilder.gemspec
|
40
41
|
- ./lib/jbuilder.rb
|
41
42
|
- ./lib/jbuilder_template.rb
|
data/jbuilder-0.5.0.gem
DELETED
Binary file
|