class Hash

Public Instance Methods

safe_invert() click to toggle source

like invert but not lossy. possibly a good blog post.

# File lib/hash.rb, line 3
def safe_invert
  inject({}) do |acc, (k, v)|
    if v.is_a? Array
      v.each do |vx|
        acc[vx] = acc[vx].nil? ? k : [acc[vx], k].flatten
      end
    else
      acc[v] = acc[v].nil? ? k : [acc[v], k].flatten
    end
    acc
  end
end