Module: Cosmo::Utils::Hash
- Defined in:
- lib/cosmo/utils/hash.rb
Class Method Summary collapse
-
.dup(hash) ⇒ Object
deep dup.
-
.set(hash, *keys, value) ⇒ Object
deep set.
- .symbolize_keys!(obj) ⇒ Object
Class Method Details
.dup(hash) ⇒ Object
deep dup
37 38 39 |
# File 'lib/cosmo/utils/hash.rb', line 37 def dup(hash) Marshal.load(Marshal.dump(hash)) end |
.set(hash, *keys, value) ⇒ Object
deep set
27 28 29 30 31 32 33 34 |
# File 'lib/cosmo/utils/hash.rb', line 27 def set(hash, *keys, value) last_key = keys.pop target = keys.reduce(hash) do |base, key| base[key] ||= {} base[key] end target[last_key] = value end |
.symbolize_keys!(obj) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/cosmo/utils/hash.rb', line 8 def symbolize_keys!(obj) case obj when ::Hash obj.keys.each do |key| raise ArgumentError, "key cannot be converted to symbol" unless key.respond_to?(:to_sym) sym = key.to_sym value = obj.delete(key) obj[sym] = symbolize_keys!(value) end obj when ::Array obj.map! { |v| symbolize_keys!(v) } else obj end end |