From: M Mohr Date: 2002-09-21T01:23:03+09:00 Subject: Re: Checking hash key's and values, with case insensitivity Dossy writes: > On 2002.09.21, Tom Gilbert wrote: > > * Dossy (dossy@panoptic.com) wrote: > > > On 2002.09.20, Khurram wrote: > > > > How can I check hash keys and values without case sensitivity? > > > > Specifically I'm referring to the hash ".has_key?" and ".has_value?" > > > > methods. I believe these are case sensitive by default. > > > > > > class Hash > > > def has_ikey?(key) > > > self.keys.map { |key| key.upcase }.member? key.upcase > > > end > > > end > > > > Doesn't iterating through all the keys on a lookup kindof take away the > > advantages of a hashtable? :) > > If you're looking for case insensitive hashes you're already > going to hell. > > Isn't the whole constraint of a hashtable is that it's case sensitive? if you do not need the case-information of your hash-keys at all you could mangle the key to lowercase in the []= and [] methods class Hash_I < Hash alias get_old [] alias set_old []= def [](key) return get_old(key.to_s.upcase) end def []=(key, value) return set_old(key.to_s.upcase, value) end end if i needed both (case-sensitive keys *and* case-insensitive member?- lookups), i would use a second auxiliary-hash in the class above. regards messju > -- Dossy