A utility class to provide indifferent access to hash data.
Inspired by ActiveSupport’s HashWithIndifferentAccess, this class has a few notable differences:
ALL keys are converted to strings (via to_s)
It does not deep merge/convert hashes indifferently, good for fla
It will not perserve default value behaviours
These features were omitted because our primary use for this class is to wrap a 1-level hash as a return value, but we want the user to access the values with string or symbol keys.
@private
# File lib/aws/core/indifferent_hash.rb, line 33 def initialize *args if args.first.is_a?(Hash) super() merge!(*args) else super(*args) end end
# File lib/aws/core/indifferent_hash.rb, line 50 def [] key _getter(_convert_key(key)) end
# File lib/aws/core/indifferent_hash.rb, line 45 def []=(key, value) _setter(_convert_key(key), value) end
# File lib/aws/core/indifferent_hash.rb, line 77 def delete key super(_convert_key(key)) end
# File lib/aws/core/indifferent_hash.rb, line 73 def fetch key, *extras, &block super(_convert_key(key), *extras, &block) end
# File lib/aws/core/indifferent_hash.rb, line 66 def has_key? key super(_convert_key(key)) end
# File lib/aws/core/indifferent_hash.rb, line 62 def merge hash self.dup.merge!(hash) end
# File lib/aws/core/indifferent_hash.rb, line 54 def merge! hash hash.each_pair do |key,value| self[key] = value end self end