module Hashie::Extensions::StrictKeyAccess

def [](key)


KeyError: key not found: "noes"
>> a["noes"]
=> {}
>> a = StrictKeyAccessHash.new(123)

With StrictKeyAccess:

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

Normal:

NOTE: When key lookup fails a KeyError is raised.
NOTE: Defaults don't make any sense with a StrictKeyAccess.
def [](key)
  fetch(key)
end

def default(_ = nil)

def default(_ = nil)
  fail DefaultError
end

def default=(_)

def default=(_)
  fail DefaultError
end

def default_proc

def default_proc
  fail DefaultError
end

def default_proc=(_)

def default_proc=(_)
  fail DefaultError
end

def key(value)

def key(value)
  result = super
  if result.nil? && (!key?(result) || self[result] != value)
    fail KeyError, "key not found with value of #{value.inspect}"
  else
    result
  end
end