Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.93 KB | None | 0 0
  1. $KCODE = 'u'
  2.  
  3. ruI18n = {
  4.   'test1' => 'тест1',
  5.   'test3' => 'тест3',
  6.   'test4' => {
  7.     'test5' => 'тест5'
  8.   }
  9. }
  10.  
  11. enI18n = {
  12.   'test1' => 'test1',
  13.   'test2' => 'test2',
  14.   'test3' => {'test4' => 'test4'},
  15.   'test4' => {
  16.     'test5' => { 'test6' => 'test6' }
  17.   }
  18. }
  19.  
  20. Hash.class_eval do
  21.   attr_accessor :general_value
  22.  
  23.   def mix_with other_hash
  24.     self.merge(other_hash) { |key, oldval, newval|
  25.       if oldval.class == String and newval.class == Hash
  26.         newhash = Marshal.load Marshal.dump(newval)
  27.         newhash.general_value = oldval
  28.         newhash
  29.       elsif oldval.class == Hash and newval.class == Hash
  30.         oldval = oldval.mix_with newval
  31.         oldval
  32.       elsif oldval.class == Hash and newval.class == String
  33.         oldval.general_value = newval
  34.         oldval
  35.       else
  36.         oldval
  37.       end
  38.     }
  39.   end
  40.  
  41. end
  42.  
  43. def general_value data
  44.   if data.class == Hash
  45.     if data.methods.include?('general_value')
  46.       data.general_value
  47.     else
  48.       nil
  49.     end
  50.   else
  51.     data
  52.   end
  53. end
  54.  
  55. # alias для general_value
  56. def gv data
  57.   general_value data
  58. end
  59.  
  60. # выводит Hash на экран со всеми значениями
  61. def print_hash hash, level=0
  62.   tab = "    " * level
  63.   hash.keys.each do |x|
  64.     value = hash[x]
  65.     if value.class == String
  66.       puts tab+"\"#{x}\": \"#{value}\""
  67.     elsif value.class == Hash
  68.       if not general_value(value)
  69.         puts tab+"\"#{x}\":"
  70.       else
  71.         puts tab+"\"#{x}\": \"#{general_value(value)}\""
  72.       end
  73.       print_hash hash[x], level+1
  74.     end
  75.   end
  76. end
  77.  
  78. ruI18n = ruI18n.mix_with enI18n
  79. puts "====================="
  80. print_hash ruI18n
  81. puts "====================="
  82. puts "#{ruI18n['test1']}"
  83. puts "#{ruI18n['test2']}"
  84. puts "#{ruI18n['test3']}"
  85. puts "#{ruI18n['test4']}"
  86. puts "====================="
  87. puts gv ruI18n['test4']
  88. puts gv ruI18n['test4']['test5']
  89. puts gv ruI18n['test4']['test5']['test6']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement