Sha256: 2a69703551c03e8ac0b3982b414ac4f986f169fa6a195e42f8f42cfb7c416d05

Contents?: true

Size: 700 Bytes

Versions: 4

Compression:

Stored size: 700 Bytes

Contents

class Hash
  def get_by_keys *keys
    if keys.size == 1
      self[keys.first]
    else
      key = keys.shift
      if self.key? key
        self[key].get_by_keys(*keys)
      else
        nil
      end
    end
  end

  def set_by_keys keys, value
    key = keys.shift

    if keys.empty?
      self[key] = value
    else
      self[key] ||= {}
      self[key].set_by_keys keys, value
    end
  end

  def keys? *keys
    h = self
    keys.each_with_index do |key, i|
      if h.key? key
        unless i == (keys.size-1)
          return false unless h[key].is_a? Hash
          h = h[key]
        else
          return true
        end
      else
        return false
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
midiops-0.2.1 lib/core_ext/hash.rb
midiops-0.2.0 lib/core_ext/hash.rb
midiops-0.1.1 lib/core_ext/hash.rb
midiops-0.1.0 lib/core_ext/hash.rb