Sha256: 5f16d1954a23d8f067b31d209428b158747d40a940d363b19b341c482bb3b574
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
class Hash class Indifferent < Hash def initialize(hash={}) update hash end def [](key) super normalize_key(key) end def []=(key, value) super normalize_key(key), normalize_value(value) end alias_method :store, :[]= def delete(key) super normalize_key(key) end def update(hash) hash.each do |key, value| store normalize_key(key), normalize_value(value) end self end alias_method :merge!, :update def merge(hash) dup.update hash end def key?(key) super normalize_key(key) end alias_method :include?, :key? alias_method :has_key?, :key? alias_method :member?, :key? def fetch(key, *args, &block) super normalize_key(key), *args, &block end private def normalize_key(key) key.kind_of?(String) ? key.to_sym : key end def normalize_value(value) if value.kind_of? Hash self.class.new value elsif value.kind_of? Array value.map { |v| normalize_value v } else value end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hash_ext-0.1.1 | lib/hash_ext/indifferent.rb |
hash_ext-0.1.0 | lib/hash_ext/indifferent.rb |