Class: StTools::Common
- Inherits:
-
Object
- Object
- StTools::Common
- Defined in:
- lib/st_tools/common.rb
Class Method Summary collapse
-
.flatten_hash(hash) ⇒ Hash
Функция переводит хеши с несколькими уровнями вложения в плоский хэш, в котором глубина структуры заменяется ключами, разделенными точкой.
Class Method Details
.flatten_hash(hash) ⇒ Hash
Функция переводит хеши с несколькими уровнями вложения в плоский хэш, в котором глубина структуры заменяется ключами, разделенными точкой. За основу взят не-рекурсивный алгоритм отсюда: gist.github.com/lucabelmondo/4161211
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/st_tools/common.rb', line 10 def self.flatten_hash(hash) result_iter = {} paths = hash.keys.map { |key| [key] } until paths.empty? path = paths.shift value = hash path.each { |step| value = value[step] } if value.respond_to?(:keys) value.keys.each { |key| paths << path + [key] } else result_iter[path.join(".")] = value end end result_iter end |