Module: Furoshiki::Util

Included in:
Configuration
Defined in:
lib/furoshiki/util.rb

Instance Method Summary collapse

Instance Method Details

#deep_set_symbol_key(hash, key, value) ⇒ Hash

Ensure symbol keys, even in nested hashes

Parameters:

  • config (Hash)

    the hash to set (key: value) on

  • k (#to_sym)

    the key

  • v (Object)

    the value

Returns:

  • (Hash)

    an updated hash



9
10
11
12
13
14
15
16
# File 'lib/furoshiki/util.rb', line 9

def deep_set_symbol_key(hash, key, value)
  if value.kind_of? Hash
    hash[key.to_sym] = value.inject({}) { |inner_hash, (inner_key, inner_value)| deep_set_symbol_key(inner_hash, inner_key, inner_value) }
  else
    hash[key.to_sym] = value
  end
  hash
end

#deep_symbolize_keys(hash) ⇒ Object



18
19
20
# File 'lib/furoshiki/util.rb', line 18

def deep_symbolize_keys(hash)
  merge_with_symbolized_keys({}, hash)
end

#merge_with_symbolized_keys(defaults, hash) ⇒ Object

Assumes that defaults already has symbolized keys



23
24
25
# File 'lib/furoshiki/util.rb', line 23

def merge_with_symbolized_keys(defaults, hash)
  hash.inject(defaults) { |symbolized, (k, v)| deep_set_symbol_key(symbolized, k, v) }
end