# inverse from Tilo Sloboda (now in facets)
class Hash
def inverse
i = Hash.new
self.each_pair do |k,v|
if (Array === v) ; v.each{ |x| i[x] = ( i.has_key?(x) ? [k,i[x]].flatten : k ) }
else ; i[v] = ( i.has_key?(v) ? [k,i[v]].flatten : k ) end
end ; i
end
end