Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/rbcli/util/hash_deep_symbolize.rb

Overview

Functions to convert hash keys to all symbols or all strings

Direct Known Subclasses

Rbcli::Config

Instance Method Summary collapse

Instance Method Details

#deep_stringify(hsh = nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rbcli/util/hash_deep_symbolize.rb', line 35

def deep_stringify hsh = nil
  hsh ||= Marshal.load(Marshal.dump(self))
  hsh.keys.each do |k|
    if k.is_a? Symbol
      hsh[k.to_s] = hsh[k]
      hsh.delete k
    end
    deep_stringify! hsh[k.to_s] if hsh[k.to_s].is_a? Hash
  end
  hsh
end

#deep_stringify!(hsh = nil) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rbcli/util/hash_deep_symbolize.rb', line 47

def deep_stringify! hsh = nil
  hsh ||= self
  hsh.keys.each do |k|
    if k.is_a? Symbol
      hsh[k.to_s] = hsh[k]
      hsh.delete k
    end
    deep_stringify! hsh[k.to_s] if hsh[k.to_s].is_a? Hash
  end
  hsh
end

#deep_symbolize(hsh = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rbcli/util/hash_deep_symbolize.rb', line 11

def deep_symbolize hsh = nil
  hsh ||= Marshal.load(Marshal.dump(self))
  hsh.keys.each do |k|
    if k.is_a? String
      hsh[k.to_sym] = hsh[k]
      hsh.delete k
    end
    deep_symbolize! hsh[k.to_sym] if hsh[k.to_sym].is_a? Hash
  end
  hsh
end

#deep_symbolize!(hsh = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rbcli/util/hash_deep_symbolize.rb', line 23

def deep_symbolize! hsh = nil
  hsh ||= self
  hsh.keys.each do |k|
    if k.is_a? String
      hsh[k.to_sym] = hsh[k]
      hsh.delete k
    end
    deep_symbolize! hsh[k.to_sym] if hsh[k.to_sym].is_a? Hash
  end
  hsh
end