35: def self.translify(str)
36: chars = str.split(//)
37:
38: lowers = TABLE_LOWER.map{|e| e[0] }
39: uppers = TABLE_UPPER.map{|e| e[0] }
40:
41: hashtable = {}
42: TABLE.each do | item |
43: next unless item[0] && item[1]
44: hashtable[item[0]] = item[1]
45: end
46:
47: result = ''
48: chars.each_with_index do | char, index |
49: if uppers.include?(char) && lowers.include?(chars[index+1])
50:
51:
52: ch = hashtable[char].downcase.capitalize
53: result << ch
54: elsif uppers.include?(char)
55: result << hashtable[char]
56: elsif lowers.include?(char)
57: result << hashtable[char]
58: else
59: result << char
60: end
61: end
62: return result
63: end