Report abuse


			
#--
# Copyright 2007 by Stefan Rusterholz.
# All rights reserved.
# See LICENSE.txt for permissions.
#++



# The same as hash, except that keys are normalized
# before all operations, which allows to e.g. create
# a case insensitive hash or a hash that doesn't differ
# between strings and symbols...
class NormalizedHash < Hash
	def [](key)
			super(normalize(key))
	end

	def []=(key, value)
		super(normalize(key), value)
	end
	
	def has_key?(key)
		super(normalize(key))
	end
	
	def values_at(*keys)
		super(*keys.map{ |m| normalize(m) })
	end
	
	def merge(hash)
		result = self.dup
		result.merge!(hash)
		result
	end
	
	def merge!(hash)
		hash.each { |key, value|
			self[key] = value
		}
	end
	
	def normalize(key)
		key
	end
end