Class: Hash

Inherits:
Object show all
Defined in:
lib/spectre.rb,
lib/spectre/helpers.rb

Instance Method Summary collapse

Instance Method Details

#deep_merge!(second) ⇒ Object

:nodoc:



30
31
32
33
34
35
# File 'lib/spectre.rb', line 30

def deep_merge!(second)
  return unless second.is_a?(Hash)

  merger = proc { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge!(v2, &merger) : v2 }
  merge!(second, &merger)
end

#default_to!(defaults = {}, **kwargs) ⇒ Object



113
114
115
116
117
118
119
# File 'lib/spectre/helpers.rb', line 113

def default_to! defaults = {}, **kwargs
  defaults = kwargs if kwargs.any?

  defaults.each_key do |key|
    self[key] = defaults[key] unless key? key
  end
end

#to_recursive_structObject

:nodoc:



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/spectre.rb', line 38

def to_recursive_struct
  OpenStruct.new(
    transform_values do |val|
      case val
      when Hash, Array
        val.to_recursive_struct
      else
        val
      end
    end
  )
end