Module: HashHelper

Defined in:
lib/utils/hash_helper.rb

Overview

Module HashHelper

Class Method Summary collapse

Class Method Details

.get_sorted(hash, type = :asc) ⇒ Hash

The method helps to get new sorted hash by key.

Parameters:

  • hash (Hash)

    Input hash which will be sorted.

  • type (Symbol, String) (defaults to: :asc)

    Type of sorting, default is asc as ascending. One of [:asc, :desc]

Returns:

  • (Hash)

    sorted_hash



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/utils/hash_helper.rb', line 14

def self.get_sorted(hash, type = :asc)
  hash = {} unless hash
  case type.to_s.downcase.to_sym
    when :asc
      Hash[hash.sort]
    when :desc
      Hash[hash.sort{|a,b| a<=>b}]
    else
      hash
  end
end

.recursive_map_keys(data) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/utils/hash_helper.rb', line 67

def self.recursive_map_keys(data)
  data.map{|k,v|
    if v.is_a?(Hash) && !v.empty?
      inner_array = recursive_map_keys(v)
    else
      inner_array = []
    end

    [k] + inner_array
  }.reduce(:+)
end

.recursive_symbolize_keys(input_value) ⇒ Hash, Enumerable

The method recursively symbolizes keys of hash.

Parameters:

  • input_value (Hash, Enumerable)

    Data to by symbolized.

Returns:

  • (Hash, Enumerable)

    Symbolized data.



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

def self.recursive_symbolize_keys(input_value)
  case input_value
    when Hash
      Hash[
          input_value.map do |k, v|
            [k.respond_to?(:to_sym) ? k.to_sym : k, recursive_symbolize_keys(v)]
          end
      ]
    when Enumerable
      input_value.map { |v| recursive_symbolize_keys(v) }
    else
      input_value
  end
end

.recursive_unsymbolize_keys(input_value) ⇒ Hash, Enumerable

The method recursively unsymbolizes keys of hash.

Parameters:

  • input_value (Hash, Enumerable)

    Data to by symbolized.

Returns:

  • (Hash, Enumerable)

    Symbolized data.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/utils/hash_helper.rb', line 51

def self.recursive_unsymbolize_keys(input_value)
  case input_value
    when Hash
      Hash[
          input_value.map do |k, v|
            [k.respond_to?(:to_s) ? k.to_s : k, recursive_unsymbolize_keys(v)]
          end
      ]
    when Enumerable
      input_value.map { |v| recursive_unsymbolize_keys(v) }
    else
      input_value
  end
end