blob: 84db2c205344b940a2c5885e2781b457f280a4bc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
class Chef
module ChefFS
class Parallelizer
class FlattenEnumerable
include Enumerable
def initialize(enum, levels = nil)
@enum = enum
@levels = levels
end
attr_reader :enum
attr_reader :levels
def each(&block)
enum.each do |value|
flatten(value, levels, &block)
end
end
private
def flatten(value, levels, &block)
if levels != 0 && value.respond_to?(:each) && !value.is_a?(String)
value.each do |child|
flatten(child, levels.nil? ? levels : levels - 1, &block)
end
else
yield(value)
end
end
end
end
end
end
|