Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $KCODE = 'u'
- ruI18n = {
- 'test1' => 'тест1',
- 'test3' => 'тест3',
- 'test4' => {
- 'test5' => 'тест5'
- }
- }
- enI18n = {
- 'test1' => 'test1',
- 'test2' => 'test2',
- 'test3' => {'test4' => 'test4'},
- 'test4' => {
- 'test5' => { 'test6' => 'test6' }
- }
- }
- Hash.class_eval do
- attr_accessor :general_value
- def mix_with other_hash
- self.merge(other_hash) { |key, oldval, newval|
- if oldval.class == String and newval.class == Hash
- newhash = Marshal.load Marshal.dump(newval)
- newhash.general_value = oldval
- newhash
- elsif oldval.class == Hash and newval.class == Hash
- oldval = oldval.mix_with newval
- oldval
- elsif oldval.class == Hash and newval.class == String
- oldval.general_value = newval
- oldval
- else
- oldval
- end
- }
- end
- end
- def general_value data
- if data.class == Hash
- if data.methods.include?('general_value')
- data.general_value
- else
- nil
- end
- else
- data
- end
- end
- # alias для general_value
- def gv data
- general_value data
- end
- # выводит Hash на экран со всеми значениями
- def print_hash hash, level=0
- tab = " " * level
- hash.keys.each do |x|
- value = hash[x]
- if value.class == String
- puts tab+"\"#{x}\": \"#{value}\""
- elsif value.class == Hash
- if not general_value(value)
- puts tab+"\"#{x}\":"
- else
- puts tab+"\"#{x}\": \"#{general_value(value)}\""
- end
- print_hash hash[x], level+1
- end
- end
- end
- ruI18n = ruI18n.mix_with enI18n
- puts "====================="
- print_hash ruI18n
- puts "====================="
- puts "#{ruI18n['test1']}"
- puts "#{ruI18n['test2']}"
- puts "#{ruI18n['test3']}"
- puts "#{ruI18n['test4']}"
- puts "====================="
- puts gv ruI18n['test4']
- puts gv ruI18n['test4']['test5']
- puts gv ruI18n['test4']['test5']['test6']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement