Sha256: 5baa43866e768bda05951d812f7b319cdbfeb717874c7a89704161adef9a40d0
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
class CleanHash class Indifferent def initialize data @data = data end # for debug def to_json JSON.pretty_generate @data end # for puts def to_ary [@data] end # overload key ruby method because it is common hash key name # still accessible via to_h.key def key self[:key] end def key? name @data.key?(name) || @data.key?(name.to_s) || (name.respond_to?(:to_sym) ? @data.key?(name.to_sym) : nil) end def delete key out = [] out.push @data.delete(key) out.push @data.delete(key.to_s) out.push @data.delete(key.to_sym) if key.respond_to?(:to_sym) out.each { |el| return el unless el.nil? } nil end def to_h @data end def to_json *args @data.to_json *args end def [] key data = @data[key] data = @data[key.to_s] if data.nil? && !key.is_a?(String) data = @data[key.to_sym] if data.nil? && key.respond_to?(:to_sym) if data.is_a?(Hash) self.class.new data else data end end def []= key, value delete key @data[key] = value end def method_missing name, *args, &block return @data.send(name, *args, &block) if @data.respond_to?(name) m = name.to_s if m.end_with?('=') m = m.sub('=', '') self[m] = args.first elsif m.end_with?('?') !self[m.sub('?', '')].nil? elsif block self[m] = block else _method_missing_key m end end private def _method_missing_key key self[key] end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
clean-hash-0.5.11 | ./lib/clean-hash/types/indifferent_type.rb |
clean-hash-0.5.10 | ./lib/clean-hash/types/indifferent_type.rb |