module Broi::Input::Utils
Public Instance Methods
deep_merge(target, source, &block)
click to toggle source
# File lib/broi/input/utils.rb, line 14 def deep_merge(target, source, &block) if target.is_a?(Hash) && source.is_a?(Hash) keys = (target.keys + source.keys).uniq keys.map do |key| value = if [target, source].all? { |h| h.key? key } deep_merge(target[key], source[key], &block) else [target[key], source[key]].compact.first end [key, value] end.to_h else block ||= ->(_target, source) { source } block.(target, source) end end
deep_transform_values(object, &block)
click to toggle source
# File lib/broi/input/utils.rb, line 6 def deep_transform_values(object, &block) if object.is_a?(Hash) object.transform_values { |value| deep_transform_values(value, &block) } else block.(object) end end