Module: CaseInsensitiveHash

Defined in:
lib/rbbt/util/misc/indiferent_hash.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.setup(hash) ⇒ Object



77
78
79
# File 'lib/rbbt/util/misc/indiferent_hash.rb', line 77

def self.setup(hash)
  hash.extend CaseInsensitiveHash
end

Instance Method Details

#[](key, *rest) ⇒ Object



91
92
93
94
95
96
# File 'lib/rbbt/util/misc/indiferent_hash.rb', line 91

def [](key, *rest)
  value = super(key, *rest)
  return value unless value.nil?
  key_downcase = key.to_s.downcase
  super(downcase_keys[key_downcase])
end

#downcase_keysObject



81
82
83
84
85
86
87
88
89
# File 'lib/rbbt/util/misc/indiferent_hash.rb', line 81

def downcase_keys
  @downcase_keys ||= begin
                       down = {} 
                       keys.collect{|key| 
                         down[key.to_s.downcase] = key 
                       }
                       down
                     end
end

#values_at(*keys) ⇒ Object



98
99
100
101
102
# File 'lib/rbbt/util/misc/indiferent_hash.rb', line 98

def values_at(*keys)
  keys.collect do |key|
    self[key]
  end
end