Module: CodeCode::Common::Utils::Hash

Defined in:
lib/codecode/common/utils.rb

Overview

Utility methods for Hash manipulation

Instance Method Summary collapse

Instance Method Details

#except(hash, key) ⇒ Hash

Removes a key from the hash and return the modified hash

Parameters:

  • hash (Hash)
  • key (Symbol)

Returns:

  • (Hash)

    The given hash without the removed key



80
81
82
# File 'lib/codecode/common/utils.rb', line 80

def except(hash, key)
  hash.delete(key)
end

#recursive_key_symbolizer(object) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/codecode/common/utils.rb', line 67

def recursive_key_symbolizer(object)
  if object.class.eql? ::Array
    symbolize_keys_of_hashs object
  elsif object.class.eql? ::Hash
    symbolize_keys object
  end
end

#recursive_key_symbolizer!(object) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/codecode/common/utils.rb', line 59

def recursive_key_symbolizer!(object)
  if object.class.eql? ::Array
    symbolize_keys_of_hashs! object
  elsif object.class.eql? ::Hash
    symbolize_keys! object
  end
end

#select(hash, keys) ⇒ Hash

Return a new hash only with the specified keys

Parameters:

  • hash (Hash)
  • keys (Array)

Returns:



89
90
91
# File 'lib/codecode/common/utils.rb', line 89

def select(hash, keys)
  hash.select { |k, v| keys.include?(k) }
end

#symbolize_keys(hash) ⇒ Hash

Convert Hash string keys to symbol keys

Parameters:

Returns:

  • (Hash)

    The resulting hash with symbolized keys



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/codecode/common/utils.rb', line 16

def symbolize_keys(hash)
  hash.inject({}){ |memo, (k, v)|
    memo[k.to_sym] = v
    if v.class.eql? ::Hash
      memo[k.to_sym] = symbolize_keys v
    elsif v.class.eql? ::Array
      memo[k.to_sym] = symbolize_keys_of_hashs v
    end
    memo
  }
end

#symbolize_keys!(hash) ⇒ Hash

BANG! Convert Hash string keys to symbol keys

Parameters:

Returns:

  • (Hash)

    The resulting hash with symbolized keys



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/codecode/common/utils.rb', line 32

def symbolize_keys!(hash)
  new_hash = hash.inject({}){ |memo, (k, v)|
    memo[k.to_sym] = v
    if v.class.eql? ::Hash
      memo[k.to_sym] = symbolize_keys! v
    elsif v.class.eql? ::Array
      memo[k.to_sym] = symbolize_keys_of_hashs! v
    end
    memo
  }
  hash.replace new_hash
end

#symbolize_keys_of_hashs(array_of_hashs) ⇒ Object

Convert Hash Array with string keys to symbol keys

Parameters:

  • array_of_hashs (Object)

    Array of String Hash

Returns:

  • (Object)

    Array of Symbol Hash



48
49
50
# File 'lib/codecode/common/utils.rb', line 48

def symbolize_keys_of_hashs(array_of_hashs)
  array_of_hashs.collect{|hash| symbolize_keys(hash)}
end

#symbolize_keys_of_hashs!(array_of_hashs) ⇒ Object

BANG! Convert Hash Array with string keys to symbol keys

Parameters:

  • array_of_hashs (Object)

    Array of String Hash

Returns:

  • (Object)

    Array of Symbol Hash



55
56
57
# File 'lib/codecode/common/utils.rb', line 55

def symbolize_keys_of_hashs!(array_of_hashs)
  array_of_hashs.collect!{|hash| symbolize_keys(hash)}
end