Class: Hash
Instance Method Summary collapse
-
#deep_merge!(second) ⇒ Object
:nodoc:.
- #default_to!(defaults = {}, **kwargs) ⇒ Object
-
#to_recursive_struct ⇒ Object
:nodoc:.
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_struct ⇒ Object
: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 |