Sha256: d4721869dff63b84ac1ea5ec5b3db874d8d3da1a5e1c308d41e85219857727f3

Contents?: true

Size: 820 Bytes

Versions: 6

Compression:

Stored size: 820 Bytes

Contents

module Triglav::Agent
  class HashUtil
    def self.deep_symbolize_keys(obj)
      case obj
      when Hash
        obj.map {|k, v| [k.to_sym, deep_symbolize_keys(v)] }.to_h
      when Array
        obj.map {|v| deep_symbolize_keys(v) }
      else
        obj
      end
    end

    def self.deep_stringify_keys(obj)
      case obj
      when Hash
        obj.map {|k, v| [k.to_s, deep_stringify_keys(v)] }.to_h
      when Array
        obj.map {|v| deep_stringify_keys(v) }
      else
        obj
      end
    end

    #   HashUtil.setdig(hash, ['a', 'b'], 'bar') # like hash['a']['b'] = 'bar'
    def self.setdig(hash, key, val)
      keys = Array(key)
      sub_hash = hash
      keys[0...-1].each do |k|
        sub_hash = (sub_hash[k] ||= {})
      end
      sub_hash[keys.last] = val
      hash
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
triglav-agent-1.0.0 lib/triglav/agent/hash_util.rb
triglav-agent-1.0.0.rc3 lib/triglav/agent/hash_util.rb
triglav-agent-1.0.0.rc2 lib/triglav/agent/hash_util.rb
triglav-agent-1.0.0.rc1 lib/triglav/agent/hash_util.rb
triglav-agent-1.0.0.pre2 lib/triglav/agent/hash_util.rb
triglav-agent-1.0.0.pre1 lib/triglav/agent/hash_util.rb