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