lib/gon.rb in gon-5.2.0 vs lib/gon.rb in gon-5.2.1

- old
+ new

@@ -52,14 +52,28 @@ def set_variable(name, value) current_gon.gon[name] = value end - def push(data = {}) + def merge_variable(name, value) + old_value = all_variables[name] + if value.is_a?(Hash) && old_value.is_a?(Hash) + value = old_value.deep_merge(value) + end + set_variable(name, value) + end + + def push(data = {}, merge = false) raise 'Object must have each_pair method' unless data.respond_to? :each_pair - data.each_pair do |name, value| - set_variable(name.to_s, value) + if merge + data.each_pair do |name, value| + merge_variable(name.to_s, value) + end + else + data.each_pair do |name, value| + set_variable(name.to_s, value) + end end end def all_variables current_gon ? current_gon.gon : {}