Add method hash class to invert a hash: turn value to key : Hash Extensions « Hash « Ruby

Home
Ruby
1.ActiveRecord
2.Array
3.CGI
4.Class
5.Collections
6.Database
7.Date
8.Design Patterns
9.Development
10.File Directory
11.GUI
12.Hash
13.Language Basics
14.Method
15.Network
16.Number
17.Rails
18.Range
19.Reflection
20.Statement
21.String
22.Threads
23.Time
24.Tk
25.Unit Test
26.Windows Platform
27.XML
Ruby » Hash » Hash Extensions 




Add method hash class to invert a hash: turn value to key


class Hash
  def safe_invert
    new_hash = {}
    self.each do |k,v|
      if v.is_a? Array
        v.each |x| new_hash.add_or_append(x, k) }
      else
        new_hash.add_or_append(v, k)
      end
    end
    return new_hash
  end
  def add_or_append(key, value)
    if has_key?(key)
      self[key[value, self[key]].flatten
    else
      self[key= value
    end
  end
end

phone_directory = {  'A' => '1',
                     'B' => '2',
                     'M' => '3' }

p phone_directory.safe_invert
p phone_directory.safe_invert.safe_invert

 














Related examples in the same category
1.Add method to Hash class to remove one hash from another
2.Grep a hash
3.Find all
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.