module Hashie::Extensions::StrictKeyAccess

SRP: This extension will fail an error whenever a key is accessed

that does not exist in the hash.

EXAMPLE:

  class StrictKeyAccessHash < Hash
    include Hashie::Extensions::StrictKeyAccess
  end

  >> hash = StrictKeyAccessHash[foo: "bar"]
  => {:foo=>"bar"}
  >> hash[:foo]
  => "bar"
  >> hash[:cow]
    KeyError: key not found: :cow

NOTE: For googlers coming from Python to Ruby, this extension makes a Hash behave more like a “Dictionary”.

Public Instance Methods

[](key) click to toggle source

NOTE: Defaults don't make any sense with a StrictKeyAccess. NOTE: When key lookup fails a KeyError is raised.

Normal:

>> a = Hash.new(123)
=> {}
>> a["noes"]
=> 123

With StrictKeyAccess:

>> a = StrictKeyAccessHash.new(123)
=> {}
>> a["noes"]
  KeyError: key not found: "noes"
# File lib/hashie/extensions/strict_key_access.rb, line 48
def [](key)
  fetch(key)
end
default(_ = nil) click to toggle source
# File lib/hashie/extensions/strict_key_access.rb, line 52
def default(_ = nil)
  raise DefaultError
end
default=(_) click to toggle source
# File lib/hashie/extensions/strict_key_access.rb, line 56
def default=(_)
  raise DefaultError
end
default_proc() click to toggle source
# File lib/hashie/extensions/strict_key_access.rb, line 60
def default_proc
  raise DefaultError
end
default_proc=(_) click to toggle source
# File lib/hashie/extensions/strict_key_access.rb, line 64
def default_proc=(_)
  raise DefaultError
end
key(value) click to toggle source
Calls superclass method
# File lib/hashie/extensions/strict_key_access.rb, line 68
def key(value)
  super.tap do |result|
    if result.nil? && (!key?(result) || self[result] != value)
      raise KeyError, "key not found with value of #{value.inspect}"
    end
  end
end